Quelques astuces diverses, douzième
Allez, c’est reparti pour une nouvelle collections de petites bricoles qui facilitent la vie de toux ceux qui bricolent 🙂
Compresser à la volée une image disque
Le problème quand on fait une image d’une partition ou d’un disque, c’est qu’il va tout prendre, les un comme les zéro (pour rappel, tout est binaire à la base). Et si y’a beaucoup de zéro, c’est de l’espace gaspillé; si un disque fait 32Go mais seulement 10 sont utilisés, l’image fera tout de même 32Go. Heureusement on a des outils de compression pour ça, et même certains qu’on peut appeler à la volée à l’aide d’un pipe:
1 |
dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz |
Si le temps d’exécution n’est pas un problème pour vous, vous pouvez également utiliser xz qui sera plus performant mais beaucoup plus lent (on pourrait faire un petit comparatif un jour tiens 🙂 )
Rediriger la sortie d’une commande effectuée avec sudo
Le problème de sudo, c’est qu’il n’applique l’élévation de privilège qu’à la commande en cours et pas à d’éventuelles redirections, ce qui peut s’avérer gênant quand on veut écrire dans un dossier sur lequel on a pas les droits. Dans l’astuce précédente, si on veut avoir le droit d’écrire dans /media/disk (parce que oui parfois ça marche pas bien), on peut englober la commande et sa redirection sur une nouvelle instance de bash :
1 |
sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz" |
Attention cependant, cette nouvelle « session » ne charge peut-être pas tout l’environnement, dans ce cas, préférez des chemins absolus pour les commandes tapées si elles sont dans des chemins non standards.
Let’s Encrypt, Apache, et directive <Limit>
Un client filtre ses accès préprod par IP avec une directive <Limit> contenant une série d’allow et de deny dans le fichier .htaccess à la racine du site. Pour permettre aux serveurs de Let’s Encrypt de contacter le dossier .well-known afin de valider le challenge, j’ai utilisé mod_setenvif :
1 2 3 4 |
SetEnvif Request_URI "/.well-known*" lewhitelist <LIMIT> #Whitelist Let's Encrypt Allow from env=lewhitelist |
Pourquoi pas ajouter les IP Let’s Encrypt ? Parce qu’elles ne sont pas fixes (dixit la FAQ) :
What IP addresses does Let’s Encrypt use to validate my web server?
We don’t publish a list of IP addresses we use to validate, because they may change at any time. In the future we may validate from multiple IP addresses at once.
Améliorer les performances wifi sous Linux
A la cité des Sciences, mais je pense que ça peut me servir ailleurs, j’ai eu quelques difficultés avec ma carte wifi qui semblait mal conserver un lien avec le point d’accès. Mon dépanneur de Chromebook (avec qui on l’a cassé, j’en ai parlé récemment dans son démontage) m’a filé une astuce, en lien avec la gestion de l’énergie. Il faut passer par l’utilitaire iw (à installer donc) :
1 |
$ iw dev wlan0 set power_save off |
Bon par contre, si vous êtes charrette en batterie ça sera peut-être pas recommandé 🙂
Ajouter un fichier swap pour grossir l’espace existant
En attendant de pouvoir empêcher une application de faire de la merde, et d’améliorer un peu la gestion de la mémoire du noyau, un collègue a ajouté un fichier de swap d’un 1Go en plus de la partition existante. Voici la procédure suivie, en mode administrateur :
1 2 3 4 |
dd if=/dev/zero of=/swapfile bs=1024 count=1048576 chmod 600 /swapfile mkswap /swapfile swapon /swapfile |
Vous devriez voir le résultat en direct sur la taille du swap globale. Et si on veut que ça soit persistant, on peut ajouter la ligne suivante au fichier /etc/fstab :
1 |
/swapfile none swap sw 0 0 |
Evidemment, ne pas utiliser le swap c’est mieux, mais quand vous avez pas le contrôle de l’application, hein…
Tester un cipher suite en particulier avec openssl
Un client nous demande de modifier le paramètre Diffie-Hellman qui plombe ses notes sur les différents tests SSL/TLS. Je fais la modification mais par défaut en testant openssl va prendre un cipher à base de courbes elliptiques, plus récent et mieux noté, donc je vois pas le résultat :
1 2 3 4 5 6 7 8 |
$ openssl s_client -connect site.client.net:443 -servername site.client.net Peer signing digest: SHA512 Server Temp Key: ECDH, P-256, 256 bits --- SSL handshake has read 4541 bytes and written 471 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit |
Fort heureusement, openssl est plein de ressources et on peut choisir la « qualité » de connexion 🙂
1 2 3 4 5 6 7 8 |
$ openssl s_client -cipher "DHE-RSA-AES256-GCM-SHA384" -connect site.client.net:443 -servername site.client.net Peer signing digest: SHA512 Server Temp Key: DH, 2048 bits --- SSL handshake has read 4983 bytes and written 457 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit |
Docker, exporter une image
Dans le cadre d’un cluster DC/OS, un problème avec la registry du client empêchait un container de se redéployer sur un autre nœud qui ne disposait pas de l’image. Fort heureusement, on a un petit contournement pour ça, si on a accès à un nœud ou l’image est déjà là :
1 2 3 4 5 6 7 |
#Sur la machine où l'image est présente : $ docker save registry/myimage:lastest | gzip -c > myimage.tgz #Sur la machine qui doit porter le container $ gunzip -c myimage.tgz | docker load |
Supprimer le début d’un fichier à partir d’une ligne
J’ai eu à extraire d’un fichier de serveur mail la pièce jointe au format PDF. Dans ce format, la pièce jointe en question est encodée en base64 à la fin du mail. La solution, chercher une ligne de référence à partir de laquelle je conserve tout, et supprime le début. Et on fait ça avec sed :
1 |
$ sed -i.bak '1,/application\/pdf/d' fichier_mail |
Un petit vim pour nettoyer quelques lignes superflues, et on peut décoder :
1 2 3 |
$ base64 -d fichier_mail > cv.pdf $ file cv.pdf $ cv.pdf: PDF document, version 1.5 |
Forcer la coloration syntaxique dans vim
Lors de modifications lourdes apportées à un fichier de configuration Apache pour un client (multiples virtualhosts avec le même tronc de directives), j’ai déporté les règles communes dans un fichier à part et je l’inclus dans les différents vhosts. Pour m’assurer que la bonne coloration syntaxique est appliquée quand je charge ce fichier amputé des directives de bases qui permettent la détection automatique, j’ai ajouté une petite ligne au début du fichier :
1 |
# vim: filetype=apache |
Attention aux espaces 🙂 Pour savoir tout ce qu’il est possible de faire, vous pouvez vous manger la doc.
Tiret au début d’un nom de fichier
Il y a des gens comme ça sur terre qu’il faudrait brûler, parmi eux ceux qui me collent un tiret au début du nom d’un fichier. Pourquoi ? Ben le tiret en question est couramment utilisé pour désigner des options de commandes, et ça débouche sur ce genre de message d’erreur à la con sur une palanquée de commandes :
1 2 3 |
[seboss666@seboss666-ltp ~ ]$ mv -fichier-pourri.txt fichier-pourri.txt mv : option invalide -- 'c' Saisissez « mv --help » pour plus d'informations. |
Guillemets simples, doubles, rien n’y fait. Pour contourner, il faut que j’utilise une autre astuce, le chemin :
1 2 3 |
[seboss666@seboss666-ltp ~ ]$ mv ./-fichier-pourri.txt fichier-pourri.txt [seboss666@seboss666-ltp ~ ]$ l fichier-pourri.txt -rw-r--r-- 1 seboss666 seboss666 0 21.04.2018 09:55 fichier-pourri.txt |
Deux caractères, une frustration évacuée 🙂
C’est tout pour aujourd’hui, mais je me rend compte d’une chose : j’ai du relire tous les billets précédents pour vérifier que je n’avais pas déjà partagé certaines des astuces présentées ici, et il y a un précédent de doublon. Avec le nombre d’articles qui augmente dans la série, je vais devoir m’organiser pour éviter de perdre du temps et peut-être le votre à l’avenir 🙂
Oh le débutant 😉
mv -- -fichier-pourri.txt fichier-pourri.txt
Tcho !
Argh j’étais en train d’écrire la même !
Ben non justement, j’ai essayé, ça ne fonctionnait pas non plus, du moins sur le CentOS que j’avais sous la main :/
Salute,
J’ai creusé un peu mais rien trouvé. J’ai checké les bugs corrigés sur mv jusqu’en 2012 mais rien qui a attiré mon attention (https://savannah.gnu.org/news/?group=coreutils). Je me suis demandé aussi si c’était pas un alias pourri mais qq tests n’ont rien donné.
Tcho !
Pour créer le fichier swap il y a aussi
fallocate
qui alloue un fichier « sparse » (vide), ce qui est bien plus rapide et supporté par la plupart des systèmes de fichier :fallocate -l 1G /swapfile
Super intéressant, merci du partage 🙂
Tu as aussi ripmime pour extraire les pièces jointes d’un email.
Pour la compression à la volée, je te conseille d’inclure lbzip2 à ton futur comparatif (bzip2 en parallèle). Il saura utiliser tous les coeurs CPU.
Bonjour,
Concernant l’astuce de la compression d’une image de disque. As-tu testé avec la commande proposée par Sébastien Sauvage : http://www.sebsauvage.net/links/?DrNtGw ?
Merci pour ces astuces 🙂