PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

antistress : Les trucs que j'aurais aimé connaître dès mes débuts en informatique pour éviter de galérer

dimanche 12 mai 2019 à 17:54

Microphone

Il y a des trucs qu'on aurait aimé savoir dès le début pour éviter de galérer, et d'autres qu'on aurait aimé savoir avant qu'il ne soit trop tard... Petite liste basée sur mon expérience personnelle ;)

Règles d'hygiène numérique

Prenez le temps de vous créer plusieurs adresses électroniques

La règle de base est déjà d'avoir une adresse indépendante de son FAI, afin de pouvoir la conserver en changeant de FAI.

Ensuite il vous faut plusieurs adresses pour ne pas voir votre adresse principale envahie par les publicités et messages indésirables. Par exemple j'en ai quatre : professionnelle, personnelle, achats en ligne et autres relations commerciales, geekeries sous pseudonymat. Vous pouvez en prévoir une cinquième comme adresse poubelle.

Vous jonglerez facilement entre toutes ces adresses avec un logiciel multi-comptes comme Thunderbird (pour lequel je donne quelques astuces ci-après).

Prenez le temps d'organiser votre disque dur

Que ceux qui stockent tout dans le dossier Téléchargements lèvent la main ! C'est le réflexe que nous avons quand nous ne savons pas comment faire autrement.

Je conseille plutôt de faire usage des dossiers xdg-user-dirs : ce sont des dossiers standards sous GNU/Linux nommés Documents, Images, Musique, Téléchargements, Vidéos.

Dans le détail :

Prenez le temps de configurer un système de sauvegardes (ne comptez pas sur la chance)

Ce point a un rapport direct avec un des paragraphes suivants où j'évoque le cas de l'effacement inopiné du disque dur... De même qu'on se décide à poser un système d'alarmes après avoir été cambriolé, c'est après avoir perdu ses données qu'on pense à un système de sauvegarde ;)

Avec un logiciel comme Sauvegardes pour GNOME (alias Déjà Dup) qui vous prend par la main, franchement, il ne reste pas grand chose à expliquer : choisissez les dossiers à sauvegarder (facile si vous avez pris le temps d'organiser votre disque dur comme indiqué au paragraphe précédent !), où vous souhaitez écrire la sauvegarde, et si vous souhaitez protéger votre sauvegarde avec un mot de passe. Après votre choix se fera entre lancer les sauvegardes à la main (mon choix) ou automatiquement. À noter : la première sauvegarde peut prendre du temps car le logiciel doit tout copier. Ensuite, il n'écrira plus que les différences avec la copie précédente.

Prenez le temps de compartimenter votre navigation sur le Web

Exactement comme pour les adresses électroniques, il est sage de compartimenter la navigation à la fois pour limiter le pistage en ligne et pour réduire les risque de sécurité (en évitant d'ouvrir n'importe quel onglet à côté de celui de votre banque par exemple).

Comme détaillé dans ce billet, j'ai pour ma part fait le choix de créer plusieurs profils sous Firefox : surf (profil par défaut), shopping, travail, finances, séries TV et invité (un profil qui ne garde aucune trace de navigation).

Une autre possibilité est de recourir à une fonctionnalité récente de Firefox : les onglets contextuels. Tout est expliqué sur blog.mozfr.org.

Dépannage

Au secours, j'ai formaté par erreur la mauvaise partition du disque !

Ben oui, ça arrive même aux meilleurs ;)
C'est fou le temps qu'on perd en voulant aller vite !

Bon, ce qu'il faut savoir dans ce cas là, c'est qu'il ne faut surtout rien écrire sur le disque. Tant que vous n'écrasez pas vos données avec de nouvelles, c'est récupérable. Différents outils géniaux existent sous GNU/Linux pour vous sauver la mise.

Commencez par tester votre partition avec la commande :
fsck /dev/nom_de_la_partition_qui_pose_problème

Tentez de réparer la table des partitions avec TestDisk. Si ça ne fonctionne pas, passez à l'étape supérieure : essayez de récupérer vos données avec dd_rescue. Attention, sous Debian gddrescue (dont la commande dans un terminal est ddrescue) remplace dorénavant ddrescue (dont la commande dans un terminal est dd_rescue)...

Dernière possibilité à ma connaissance : utilisez des outils spécialisés dans la récupération de photos, vidéos etc. : PhotoRec (lire aussi ce billet), Foremost et ForemostGUI.

Et peut être surtout : repérez bien vos partitions avant de travailler dessus. Sous GNOME nous n'avons aucune excuse car il y un outil graphique très complet nommé Disques que je ne peux que vous conseiller d'utiliser avant d'agir.

Astuces

Sous Thunderbird, effacer n'est pas jouer

Sous Thunderbird je ne comprenais pas pourquoi le logiciel était devenu si lourd, même après avoir fait le ménage dans mes messages.
Puis, un jour, Thunderbird a commencé à me demander si je voulais compacter mes dossiers. Lassé de répondre non à chaque lancement (!) je me suis décidé à lancer une recherche sur le web à ce sujet. Surprise : le « compactage » consiste à effacer réellement les messages supprimés, un peu comme vider la corbeille de votre OS. Reconnaissons que cela n'avait rien d'évident !
Résultat, après compactage, vous retrouvez un Thunderbird réactif et de l'espace disque :)
Plus d'explications ici.

Affichez les messages sous forme de discussion dans Thunderbird ?

C'est possible, et sans extension.

Sous Debian, les paquets téléchargés pour être installés restent stockés sur le disque Dieu sait pourquoi

Une simple commande, sudo apt-get clean, vous nettoie tout cela (techniquement, elle vide le répertoire /var/cache/apt/archives).

D'autres commandes utiles pour entretenir votre Debian : sudo apt autoremove va supprimer les dépendances qui ne sont plus utilisées, et, si vous avez installé des logiciels via Flatpak, la commande flatpak uninstall --unused est utile pour nettoyer les environnements d'exécutions qui ne sont plus utilisés par les applications Fatpak.

Récupérer facilement un son ou une vidéo quelque part sur le Web

Un replay sur Arte, un podcast sur France Inter... Sous GNU/Linux existe un outil formidable, puissant et simple, en ligne de commande : youtube-dl (tuto). Ha oui, et n'oubliez pas la fonction très pratique d'autocomplétion du terminal (saisir les premières lettres de l'outil et tabuler pour afficher le nom complet). Du coup, chez moi cela prend quelques secondes et 5 étapes : copier l'url, lancer le terminal, saisir « you », tabuler, coller l'url, valider et voilà.

Convertir des pdf en jpg (ou inversement) sous linux, en 3 secondes ?

C'est possible, avec imagemagick.

Mon fichier vidéo est illisible : je le jette ?

Pas de précipitation : si vous pouvez l'ouvrir dans Avidemux (sous Debian le logiciel peut être installé à partir du dépôt deb-multimedia.org sous le nom avidemux-qt) alors c'est certainement le conteneur qui est endommagé (et non les pistes son et vidéo elles-mêmes). Inutile dans ce cas de tout ré-encoder, il suffit de ré-assembler les pistes son et vidéo dans un fichier correct. Profitez-en pour choisir un conteneur moderne et performant comme le MKV (surtout par rapport à l'antique AVI par exemple) et laissez les champs « Sortie Vidéo » et « Sortie Audio » sur « copy ».

Avidemux est vraiment le couteau suisse de la vidéo sous GNU/Linux (NB : l'équivalent pour le son est Audacity) et vous trouverez d'autres astuces le concernant dans ce billet.

Connaître l'intérieur de son PC sans l'ouvrir

Quelques commandes :
lspci -v listera assez précisément le nom et la marque de votre matériel ;
sudo hdparm -i /dev/sda pour connaître toutes les caractéristiques de votre disque dev/sda (renouveler la commande pour dev/sdb etc.) ;
nano /proc/cpuinfo vous donnera toutes les caractéristiques de votre processeur ;
lspci -nnk | grep -i vga -A2 pour savoir si le pilote graphique est bien installé ;
uname -a pour connaître la version de votre noyau ;
dpkg -s nom_du_paquet | grep ^Version pour connaître, sous Debian, la version d'un paquet donné ;
echo $WAYLAND_DISPLAY pour savoir si votre session tourne sous Wayland (réponse vide = non, "wayland-0" = oui).

Et vous, quelles astuces auriez-vous aimé connaître dès le début ?

NB : Vous trouverez beaucoup de ces astuces, et d'autres, sur ma page Liens utiles que j'essaie de garder à jour.

Gravatar de antistress
Original post of antistress.Votez pour ce billet sur Planet Libre.

Articles similaires

Boutor : Impossible de lancer une mise à niveau Ubuntu

dimanche 12 mai 2019 à 11:27

J’ai eu la mise à niveau de 18.10 vers 19.04 bloquée. Ceci est dû à un paquet non mis à jour et plus proposé à la mise à jour par le gestionnaire de mises à jour.

Ceci est lié à un décochage de sa mise à jour lors d’une précédente mise à jour (par erreur dans mon cas), lorsque le gestionnaire de mise à jour liste les mises à jour disponibles.

Du coup, lorsque le bouton Mise à niveau apparaît dans le gestionnaire de mise à jour, cliquez dessus ne mène à rien.

Pour diagnostiquer le problème, procédez comme suit dans un terminal:
sudo do-release-upgrade

Vous obtenez en retour:

Please install all available updates for your release before upgrading.

Il faut lister les paquets non mis à jour pour forcer leur installation :
apt list --upgradable

Dans mon cas, j’ai obtenu :

calibre/cosmic,cosmic 3.31.0+dfsg-1 all [pouvant être mis à jour depuis : 3.21.0+dfsg-1build1]
N: Il y a une version supplémentaire 1. Veuillez utiliser l’opérande « -a » pour la voir.

Je force sa mise à jour :
sudo apt-get install calibre

Je ferme le terminal et relance le gestionnaire de mise à jour, clique sur le bouton mise à niveau. Et cela fonctionne.

Il faudra bien sûr adapter la mise à niveau de vos paquets selon la liste obtenue.

Gravatar de Boutor
Original post of Boutor.Votez pour ce billet sur Planet Libre.

Yannic Arnoux : Antisocial en veilleuse

dimanche 12 mai 2019 à 00:00

Je traîne beaucoup moins sur Diaspora : je poste très peu et j’ai fait récemment une grosse lessive parmi les gens et les hashtags que je suivais.

La descente

C’est en partie à cause de la triste actualité des six derniers mois ; les gilets jaunes, les violences, le bashing anti-gouvernement, il n’y avait plus que cela dans mon fil d’actu Diaspora. Des gens que je suivais pour leurs publications sur le Libre et l’Open Source ont commencé à militer et c’est devenu leur sujet principal. Paradoxalement, alors que je limite la pollution de mon esprit en ne regardant plus les informations télévisées depuis des années, je me suis retrouvé à avoir le point de vue du réseau social sur un sujet brûlant d’actualité. Et au bout de quelques semaines de matraquage j’ai eu un ras-le-bol, la surdose et j’ai commencé à couper les sources.

Ca m’a fait prendre du recul sur le réseau en entier et reconsidérer ma façon de l’utiliser. Ce qui me plait dans Diaspora c’est la possibilité de suivre une personne ou de suivre un hashtag donc un centre d’intérêt. Mais les deux possibilités ont des inconvénients.

Suivre toutes les publications d’une personne

Cela suppose que tout ce qu’il publie va vous intéresser. C’est rarement le cas ! L’exemple des gilets jaunes montre l’inconvénient à son paroxysme où on finit par virer la personne. Sans en arriver là, on a toujours du bruit : des publications qui ne nous intéressent pas donc du temps perdu et le besoin de filtrer l’information.

Un autre problème est la manie de certains de copier-coller des articles en intégralité. Etant dans une consommation mobile de Diaspora, c’est pas génial de faire défiler 30000 pixels pour arriver à la publication suivante dans le flux d’actualité. Je préfère un lien vers l’article et un commentaire personnel qui me donne envie de l’ouvrir.

Suivre un hashtag pour alimenter un centre d’intérêt

C’est une fonctionnalité géniale pour couvrir un sujet d’intérêt mais qui peut avoir des désagréments : du bruit car la publication n’est pas intéressante ou hors-sujet, ou bien on assiste à une conversation publique entre deux personnes. Par exemple j’aime les photos de villes anciennes et je découvre des trucs sympas. Par contre je m’intéresse à la collapsologie et là c’est du concentré d’ondes négatives, du militantisme local mais rarement du contenu qui m’intéresse. Après c’est le risque, un hashtag c’est ouvert donc il faut s’attendre à traiter du déchet (donc passer du temps) pour trouver des pépites.

Et le micro-blogging ?

Vu le genre de publication que je fais sur Diaspora et ce que j’en attends, je me suis dit que le micro-blogging était peut-être plus indiqué pour moi : une publication courte avec un lien ou une photo et un commentaire ou un ressenti. J’ai installé une instance Pleroma une journée puis je l’ai démonté et je me suis inscrit sur Mastodon chez la mère Zaclys.

J’ai toujours un compte Twitter où je ne publie rien mais qui me sert à suivre quelques comptes officiels qu’on ne retrouvera jamais sur le Fediverse. Ma première mauvaise idée a été de republier le compte Twitter LesNews sur le Fediverse via un bot : lesnews_bot at botsin.space. C’était marrant à faire, ça m’a amusé une paire d’heures (https://hub.docker.com/r/kianby/tweet-toot) mais j’ai réalisé que je dupliquais le modèle que je fuyais : inonder des fils de toots avec de l’information mal qualifiée.

Finalement le micro-blogging n’est pas plus adapté à ma sociabilité virtuelle limitée donc je reste sur Diaspora pour garder le contact avec mon petit cercle de connaissances et je restreins les hashtags suivis. Je me concentre sur la source des infos plutôt que les gens qui les relaient, c’est moins d’énergie perdue. Pour les domaines liés à l’informatique (technos, système, Linux) on a de toute façon a peu près tous les mêmes sources. Si la personne produit du contenu sur un site je la rajoute à mes fidèles flux RSS que j’écluse quotidiennement. Et je redécouvre les newsletter grâce à Carl Chenet. C’est un média intéressant, une publication hebdomadaire est idéale pour mon cas, ça laisse la semaine pour lire, le contenu a été filtré en amont, c’est efficace.

Gravatar de Yannic Arnoux
Original post of Yannic Arnoux.Votez pour ce billet sur Planet Libre.

blog-libre : L’option ControlMaster de ssh_config

samedi 11 mai 2019 à 15:45

D’habitude j’essaie d’être synthétique, ce ne sera pas le cas cette fois, l’article sera long. Je voudrais vous montrer comment je procède lorsque je creuse un sujet et les voies tortueuses pour apprendre, comprendre.

L’option ControlMaster

D’après le man ssh_config, elle permet d’activer le partage de multiples sessions à travers une seule connexion réseau. On ne le dit pas assez mais le man c’est brut de décoffrage, celui qui comprend à quoi cette option peut servir à partir de l’explication est un génie. Je vais faire la traduction en vous parlant de son usage et de son intérêt.

Lorsqu’on se connecte à un serveur en SSH, on passe par une phase d’authentification avant d’être connecté. C’est en général très rapide, j’ai fait quelques tests sur des serveurs au boulot, je tourne à 0.3s. Cela va dépendre de nombreux facteurs : la vitesse de votre connexion (fibre, ADSL…), votre méthode d’authentification (clés SSH, clés SSH et mot de passe…), l’emplacement géographique de votre serveur, etc. L’option ControlMaster va permettre de réutiliser la connexion que vous venez d’établir, la première connexion aura toujours cette durée autour de 0.3s (aucun changement) mais la seconde connexion au même serveur se fera beaucoup plus rapidement, je tourne à 0.03s.

Je n’ai pas vu un grand intérêt à cette option au départ puisqu’on parle de gagner du temps (connexion plus rapide) à partir de la seconde connexion à un même serveur, pourquoi se connecter plusieurs fois au même serveur ? En réalité, il y a de nombreuses occasions où vous allez vous connecter plusieurs fois au même serveur et un intérêt certain :
1/ On se connecte à un serveur à 9h00, on se déconnecte puis on y retourne 2h plus tard pour voir quelque chose. En temps normal vous aurez 2 phases d’authentification, à chaque fois 0.3s pour établir la connexion. Avec l’option ControlMaster activée, la première connexion sera de 0.3s, les autres dans la journée de 0.03s. À noter que certains lanceront un screen et resteront connectés toute la journée sur le serveur, ils se contenteront de rappeler leur session screen connectée au serveur (1 seule connexion)
2/ Lorsqu’on parle de connexion, pensez à vos scripts et tâches récurrentes : rsync, git, script qui va se connecter plusieurs fois à un serveur en lançant des commandes
3/ Dans mon job j’ouvre souvent plusieurs connexions sur le même serveur : Typiquement un terminal pour suivre les logs (less +F ou tail -f), le second pour éditer un fichier de conf, le dernier pour restart un service et lancer des tests (3 connexions). À noter que certains lanceront un screen et diviseront simplement le terminal en 3 (1 seule connexion) mais tout le monde ne sait/veut pas se servir de screen
4/ On peut toujours sourire devant des temps aussi courts mais à l’usage on voit et on sent la différence. Une fois goûté, difficile de s’en passer

Comprendre (et creuser)

Dans une majorité d’articles, vous aurez sensiblement cette configuration proposée à ajouter à votre ~/.ssh/config.

Host *
    ControlMaster auto
    ControlPath /tmp/socket-%r@%h:%p
    ControlPersist 3600

Host * signifie que les options suivantes s’appliqueront à tous les serveurs. On retrouve ControlMaster auto à l’identique dans tous les articles, je vous laisse chercher à quoi correspond auto et pourquoi c’est ce qu’il faut utiliser hé hé.

J’ai ajouté la partie suivante à mon ~/.ssh/config puis j’ai commencé à bosser avec. Pour bien comprendre quel est le rôle de chaque option, il est nécessaire de commencer par une config minimale.

Host *
    ControlMaster auto

Un jour je me connecte à un serveur puis je lance une seconde connexion dessus, je termine ma tâche et ferme ma première connexion, la seconde session (seconde connexion) est alors immédiatement fermée. Désagréable et potentiellement très problématique mais cela s’explique facilement. Souvenez-vous, on partage de multiples sessions à travers une seule connexion réseau. Là on a fermé la première session/connexion (par laquelle passe la seconde session), par conséquent les deux connexions sont coupées. On a besoin de l’option ControlPersist.

L’option ControlPersist

L’option ControlPersist va avoir deux utilités différentes en fonction du chiffre renseigné. Ce chiffre (3600 par exemple) spécifie le temps que la connexion maître doit rester ouverte en arrère-plan dans l’attente d’une future connexion. 3600 correspond à 3600s, on peut également écrire 1h (pour 1 heure) ou 60m (pour 60 minutes). Je préfère les notations claires et human-readable.

Maintenant utilisons dans ~/.ssh/config.

Host *
    ControlMaster auto
    ControlPersist 5

Je me connecte à un serveur puis je lance une seconde connexion dessus, je ferme ma première connexion, la seconde session reste ouverte. On vient de résoudre le problème cité plus haut (première utilité).

Renseignons dans ~/.ssh/config.

Host *
    ControlMaster auto
    ControlPersist 20

Pour voir le gain de temps lié à l’option ControlMaster, je vous invite à lancer time ssh cascador@monserveur.bogosse.net exit, j’ai sensiblement 0.3s. Relancez la commande, j’obtiens 0.03s. L’option ControlMaster fait son job. À noter que lorsque vous fermez une session « partagée » via l’option ControlMaster, vous avez le petit message : Shared connection to monserveur.bogosse.net closed.

À présent lancez time ssh monserveur.bogosse.net exit, attendez 1 minute (pour rappel ControlPersist est à 20s) puis relancez la commande, j’obtiens 0.3s à la première commande et la même chose à la seconde commande. On aborde là le point 1/ cité tout à l’heure (On se connecte à un serveur à 9h00, on se déconnecte puis on y retourne 2h plus tard…). L’option ControlPersist doit être réglée en conséquence, au minimum 2h pour notre exemple. On se connecte à 9h00 sur le serveur, à 9h05 on se déconnecte, à 11h02 on se connectera en 0.03s mais si ça avait été 11h10 alors la connexion se serait faite en 0.3s. Après quelques réflexions et tests, j’ai décidé de mettre ControlPersist 4h pour ma part. Résumons : Sur chaque serveur où je me connecte une première fois, je me connecterai bien plus rapidement à la prochaine connexion dans la limite de 4h (seconde utilité).

L’option ControlPath

Tout ceci fonctionne grâce aux sockets. Un socket de contrôle est utilisé pour le partage de connexion. L’option ControlPath spécifie le chemin d’accès au socket de contrôle.

Renseignons dans ~/.ssh/config.

Host *
    ControlMaster auto
    ControlPath /tmp/socket-%r@%h:%p
    ControlPersist 5m

Si je me connecte à mon serveur (ssh cascador@monserveur.bogosse.net) alors j’aurais un fichier /tmp/socket-cascador@monserveur:22 sur mon pc. D ‘après le man ssh_config toujours : %r the remote username, %h the remote hostname, %p the remote port. Cela permet d’identifier le socket utilisé pour la connexion à un serveur précis. Si on se déconnecte du serveur, le fichier /tmp/socket-cascador@monserveur:22 sera toujours présent… pendant 5 minutes (ControlPersist 5m). En supprimant ce fichier, on rompt la connexion au serveur et si on se connecte de nouveau au serveur, ça sera en 0.3s.

Pourquoi utiliser /tmp/socket-%r@%h:%p ? Bah justement c’est pas une bonne idée. Il est probable que vous soyez seul à utiliser votre pc, dans mon cas je partage mon pc portable avec Madame. Si je verrouille ma session utilisateur, qu’elle ouvre sa session puis fait ls -l /tmp : Elle saura quel nom d’utilisateur j’utilise, le nom de mon serveur et le port SSH. Pas glop si on considère qu’en matière de sécurité, moins l’attaquant a d’informations, mieux on se porte.

J’utilise ControlPath ~/.ssh/sockets/socket-%C. Donc mkdir -p ~/.ssh/sockets; chmod 700 ~/.ssh/sockets pour commencer. Les sockets sont dans mon home (chiffré), dans un répertoire (avec les droits qui vont bien) précis ~/.ssh/sockets/ et facilement retrouvable (il peut y avoir beaucoup de choses dans /tmp). %C Shorthand for %l%h%p%r, dans les faits ça donne un truc incompréhensible et c’est ce que je veux justement, exemple : ~/.ssh/sockets/socket-2416f65bfd78bq467a7887585sd1d4g456cc78e7. Certains diront mais du coup tu sais pas de quel serveur il est question, yes mais en gros je m’en fous et je m’y retrouve avec la date de modification du fichier (socket pour être précis).

À noter que certains préconisent /tmp car au reboot les sockets seront effacés… c’est le cas peu importe où vous les mettez, ça revient un peu à dire qu’une connexion réseau survit à un reboot…

Sockets, où ils sont mes sockets

On arrive au gros drame. Ce problème est tellement énorme qu’en ce qui me concerne j’ai failli rejeter l’utilisation de ControlMaster, attention cependant il s’agit d’un cas très particulier (perte de réseau) il est probable que ça concerne une minorité de personnes. Si vous bossez au bureau, ça ne vous arrivera qu’extrêmement rarement. Je bourlingue beaucoup : Datacenter, coworking, maison… les déconnexions Wi-Fi sont assez régulières. Plantons le décor : Je suis en datacenter, je suis déconnecté du Wi-Fi, je ne peux donc plus lancer de commandes sur les serveurs sur lesquels j’étais connecté, en général je déconnecte mon OpenVPN, je ferme mon terminal (plusieurs onglets, XX connexions) puis une fois reconnecté je relance mon OpenVPN. Drame, je lance mes connexions aux serveurs mais j’attends indéfiniment que les connexion se fassent. Que se passe-t-il Sherlock ?

Il se passe que les sockets sont toujours présents dans ~/.ssh/sockets/, quand je lance une connexion à un serveur où j’étais précédemment connecté SSH utilise un de ces sockets qui ne fonctionne plus (car j’ai perdu la connexion réseau quelques instants auparavant). Je supprime tous les sockets dans ~/.ssh/sockets/, je peux de nouveau me connecter à mes serveurs.

Ce problème, je n’ai pas vu un article en parler et pourtant quelle saloperie ! J’ai mis en place une solution qui me paraît assez propre et à l’usage, ça le fait. J’utilise beaucoup deux alias, le premier pour lancer la connexion au VPN de ma boîte, le second pour kill cette connexion VPN (alias pko='sudo pkill openvpn'). J’ai simplement ajouté ce dont j’avais besoin à la suite donc alias pko='sudo pkill openvpn; for socket in $(find ~/.ssh/sockets/ -type s); do ssh -o ControlPath=$socket -O exit toto 2>/dev/null || rm $socket; done'.

Ce sera plus lisible ainsi.

for socket in $(find ~/.ssh/sockets/ -type s); do
    ssh -o ControlPath=$socket -O exit toto 2>/dev/null || rm $socket
done

C’est une boucle basique.
for socket in : Pour chaque socket
find ~/.ssh/sockets/ -type s : Trouver les sockets (-type s) dans le dossier ~/.ssh/sockets/
ssh -o ControlPath=$socket -O exit toto 2>/dev/null || rm $socket : On lance ssh -o ControlPath=$socket -O exit toto, si le code de sortie est différent de 0 alors on rm $socket

On pourrait me faire le reproche que c’est super-ultra-méga propre parce que 1/ On sait où chercher (~/.ssh/sockets/) et a priori il n’y aura que des sockets dans ce dossier 2/ un simple rm ~/.ssh/sockets/socket-* fait le job. Ouais c’est pour vous expliquer quelle est la bonne/élégante manière de faire. Je ne sais pas si c’est nécessaire, personne ne démonte ses partages réseaux (CIFS, NFS…) « proprement » avant d’éteindre son pc par exemple.

ssh -o ControlPath=$socket -O exit toto 2>/dev/null what ??

ssh -o ControlPath=$socket -O exit est la manière propre de fermer un socket, je vous invite à man ssh puis rechercher -O ctl_cmd. On peut également faire ssh -O exit cascador@monserveur.bogosse.net.

Pourquoi toto ? Parce que si j’avais mis autre chose (genre cascador@monserveur.bogosse.net), vous auriez pensé que la commande allait se connecter au serveur pour lui dire ferme le socket. La commande qu’on envoie ici est en local, le socket qu’on va exit est en local dans le dossier ~/.ssh/sockets/ MAIS la syntaxe d’une commande ssh étant ssh hostname au minimum, on est obligé de fournir un hostname sinon on aura une erreur. À noter que certains écrivent ssh -o ControlPath=$socket -O exit localhost, je trouve ça trompeur car on pourrait croire que localhost est la seule/bonne réponse alors que vous pouvez mettre indifféremment babar, troubadour, cunnilingus…

Autre subtilité faisons ssh -o ControlPath=/home/cascador/.ssh/sockets/socket-2416f65bfd78bq467a7887585sd1d4g456cc78e7 -O exit carambar. La commande s’exécute bien, on a le code retour 0 si on fait echo $? (code retour de la dernière commande) MAIS on a un message « Exit request sent » qui lui ne sort pas sur stdout mais stderr (d’où le 2>/dev/null). Ce qui veut dire qu’on peut avoir une commande qui s’exécute bien mais une sortie sur stderr. Je ne savais pas que c’était possible, ça se trouve c’est commun mais je n’avais jamais fait attention. Tout l’intérêt de creuser les choses, on découvre.

C’est bon là, t’as fini ?

Ouais c’est bon, j’espère avoir bien illustré la différence entre la documentation et la pratique. C’est en forgeant qu’on devient forgeron. Aujourd’hui j’utilise ça.

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/socket-%C
    ControlPersist 4h

À noter que vous n’êtes bien-sûr pas obligé d’utiliser ces options pour tous les serveurs, un dev qui met ces options pour sa connexion à son serveur de dev pour push/pull y aura déjà un intérêt.

Tcho !

Sources :
http://www.qanuq.com/2017/09/09/diminuer-temps-connexion-ssh/
https://developer.rackspace.com/blog/speeding-up-ssh-session-creation/
https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing
http://www.anchor.com.au/blog/2010/02/ssh-controlmaster-the-good-the-bad-the-ugly/
https://www.cyberciti.biz/faq/linux-unix-osx-bsd-ssh-multiplexing-to-speed-up-ssh-connections/
https://unix.stackexchange.com/questions/24005/how-to-close-kill-ssh-controlmaster-connections-manually
https://unix.stackexchange.com/questions/427189/how-to-cleanup-ssh-reverse-tunnel-socket-after-connection-closed

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Articles similaires

blog-libre : youtube-dl, récupérer les flux audio et vidéo de nombreux sites

mercredi 8 mai 2019 à 18:15

youtube-dl sous licence Unlicense permet de télécharger les flux audio et vidéo de nombreux sites dont youtube, youporn, facebook, arte.tv, france.tv, tf1.fr, vimeo, twitch… En temps normal j’aurais fait une présentation plus soignée de youtube-dl mais Next INpact a publié un article complet que je vous invite à lire (comme je soutiens la presse de qualité et que je suis une grosse feignasse). Pour l’installation, go to Mémo installation packages.

À l’occasion de la diffusion de Internet ou la révolution du partage, faisons un focus sur les principales commandes et options à connaître pour utiliser cet outil.

Les options à connaître

-F, --list-formats : Lister tous les formats des flux audio et vidéo disponibles pour une URL
-r, --limit-rate : Limiter le débit du téléchargement (500K ou 3.5M par exemple)
-a, --batch-file : Fournir une liste d’URLs à télécharger via un fichier (une URL par ligne)
-i, --ignore-errors : Continuer si une erreur se produit lors d’un téléchargement, surtout utile quand on fournit une liste d’URLs à télécharger (--batch-file)
-o, --output : Nommer le fichier de sortie à partir de template, voir les exemples et la documentation
-x, --extract-audio : Extraire le flux audio
--audio-format : Spécifier le format audio de sortie (« best », « aac », « flac », « mp3 », « m4a », « opus », « vorbis », « wav », « best » par défaut)
--audio-quality : Spécifier la qualité audio de sortie (valeur entre 0 la meilleure et 9 la pire)
-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' : Télécharger le meilleur format mp4 disponible ou le meilleur format disponible si le mp4 n’est pas disponible, voir les exemples et la documentation

Récupérer le son d’une vidéo

Une énorme quantité de clips et chansons sont présentes sur YouTube, vous avez envie d’avoir Je danse le Mia sous le coude ?

youtube-dl --extract-audio --audio-format m4a --audio-quality 0 --output "~/Musique/%(title)s.%(ext)s" https://www.youtube.com/watch?v=wf4YT-vsq_4

Vous obtiendrez ~/Musique/IAM - Je Danse le Mia (Audio officiel).m4a.

Récupérer une vidéo

Votre pêché mignon est Capitaine Marleau (comme moi) mais vous avez loupé celui de mardi soir (shit une rediff de la saison 1 !) ?

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --output "~/Téléchargements/%(title)s.%(ext)s" https://www.france.tv/france-3/capitaine-marleau/saison-1/304197-en-trompe-l-oeil.html

Vous obtiendrez ~/Téléchargements/Capitaine Marleau - En trompe-l'oeil.mp4.

Récupérer une liste de vidéos

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --output "~/Téléchargements/%(title)s.%(ext)s" --ignore-errors --batch-file '~/Téléchargements/Liste_dl.txt'

Vous obtiendrez… un paquet de vidéos. Vous pouvez vous passer de l’option --batch-file en renseignant plusieurs URLs sur la ligne de commande.

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --output "~/Téléchargements/%(title)s.%(ext)s" --ignore-errors URL URL URL

Script et alias

Voici l’alias que j’ai dans ~/.bash_aliases (vous pouvez le mettre directement dans ~/.bashrc) : alias yt='screen -dm ~/Scripts/yt.sh'. Je remplis le fichier Liste_dl.txt des vidéos que je veux télécharger puis yt, le script yt.sh est alors lancé dans un screen.

#!/bin/bash

sudo -H pip3 install --upgrade youtube-dl
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --output "~/Téléchargements/%(title)s.%(ext)s" --ignore-errors --batch-file '~/Téléchargements/Liste_dl.txt'

Téléchargements

youtube-dl reste mon outil attitré pour le contenu légal : replay, documentaire, vidéo, musique. J’utilise openpyn quand je fais du torrent ou du direct download. Pour le reste, il y a Netflix et Mastercard.

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.