• MINT > couteau suisse, truc, astuce et pense-bête

      Modifier son nom d’utilisateur : sudo ln -s /home/ancien_nom /home/nouveau_nom.

      Firefox

      Dans about:config, je mets media.autoplay.enabled false parce que j’en ai marre des vidéos qui se lancent sans mon avis et mousewheel.with_control.action 1 parce que j’en ai marre de zoomer/dézoomer par erreur avec la touche Ctrl appuyée.

      Dans Mieux utiliser la barre d’adresse de Firefox je vous expliquais mon workflow hautement basé sur les favoris/bookmarks. Il faut savoir que les bookmarklets javascript ne sont pas affichés par défaut dans la barre d’adresse, il faut browser.urlbar.filter.javascript false.

      Stopper rsyslog

      Pour ne rien loguer (éviter des écritures genre sur la carte SD d’une Raspberry Pi : systemctl stop syslog.socket rsyslog.service. La difficulté est de ne pas oublier d’arrêter le socket. Sur un serveur parfois les logs remplissent /var, ça permet au brave sysadmin de corriger le tir.

      syncthing

      L’outil de synchronisation syncthing peut tourner en tant que service. Pour l’activer systemctl enable syncthing@monjolinomdutilisateur.service, pour le démarrer systemctl start syncthing@monjolinomdutilisateur.service.

      Si comme moi vous utilisez un nœud (node) syncthing sur un serveur headless (sans interface graphique), on peut toujours se servir de SSH pour le configurer graphiquement ssh -N -L 9090:127.0.0.1:8384 -i ~/.ssh/id_ed25519_pi -p 2222 pi@192.168.1.30 après quoi vous ouvrez votre navigateur sur 127.0.0.1:9090. Une fois que c’est fini vous fermez la connexion SSH avec Ctrl+c.

      Pour trouver les fichiers qui ont des conflits de synchronisation find ~/Sync -name *sync-conflict-* et pour tous les supprimer find ~/Sync -name *sync-conflict-* -exec rm '{}' +;.

      Retrouver son petit dans un réseau local

      J’ai la flemme de me connecter sur la box pour savoir quelle adresse IP un périphérique chope en DHCP du coup nmap -sP 192.168.1.0/24. Si on ne connait pas la plage à scanner, on la retrouve avec ip a. L’avantage étant que ces commandes sont simples à retenir.

      Cron au démarrage

      La syntaxe cron pour lancer une tâche au boot : @reboot

      Je m’en sers pour faire une sauvegarde du pc portable 20 mn après le démarrage.
      @reboot nomUtilisateur sleep 1200 && /bin/bash ~/scripts/borg_backup.sh > ~/logs/borg_backup.log 2>&1

      Lister les disques avec classe

      for device in /dev/sd?; do echo $device; smartctl -i $device | grep 'Model\|Serial\|Firmware\|Capacity'; done;

       

      Vous devrez peut-être rajouter sudo devant smartctl (et évidemment apt install smartmontools).

       

      for device in /dev/sd?; do echo $device; sudo smartctl -i $device | grep 'Model\|Serial\|Firmware\|Capacity'; done;
      /dev/sda
      Model Family:     Indilinx Barefoot_2/Everest/Martini based SSDs
      Device Model:     OCZ-VERTEX4
      Serial Number:    OCZ-07613G13Z3ZGF8CD
      Firmware Version: 1.5
      User Capacity:    128 035 676 160 bytes [128 GB]
      /dev/sdb
      Model Family:     Seagate Barracuda 7200.14 (AF)
      Device Model:     ST1000DM003-1ER162
      Serial Number:    S4Y34AQ3
      Firmware Version: CC45
      User Capacity:    1 000 204 886 016 bytes [1,00 TB]
      /dev/sdc
      Model Family:     Samsung based SSDs
      Device Model:     Samsung SSD 850 PRO 256GB
      Serial Number:    S251NSAG412256S
      Firmware Version: EXM02B6Q
      User Capacity:    256 060 514 304 bytes [256 GB]

       

      Plus simple :

       

      ls /dev/sd*[a-z] # Montre juste les disques, ignore les partitions. Exemple : /dev/sda
      ls /dev/sd* # Montre les partitions. Exemple : /dev/sda /dev/sda1

      La Bible

      Rappelons à tous la Bible Bash : The Bash Hackers Wiki. J’aime relire le soir au coin du feu les quelques lignes qui m’ont montré la voie, il ne faut plus utiliser les backticks ` mais $(COMMANDS) ni &>LOGFILE mais >LOGFILE 2>&1.

      Rsync sélectif

      find source -name "*.php" -print0 | rsync -av --files-from=- --from0 ./ ./destination/

      Grep forcer l’affichage du nom du fichier

      limiter aux fichiers *.php via find mais j’avais pas les noms :

       

      find . -name "*.php" -exec grep "<?php" {} \;
      <?php $ezcyp = 'ac142v_#9\'-ug*p3Hrx7mn08fsykolitbed';$hhvjzur = Array();...
      <?php
      <?php
      This page sets a max-age cache control for <?php echo $secs?> seconds. The header looks like this:<br>

       

      Pas pratique, car grep pense dans ce cadre qu’il est tout seul. Il suffit de tricher un peu au niveau de grep :

       

      find . -name "*.php" -exec grep "<?php" {} /dev/null \;
      ./mal.php:<?php $ezcyp = 'ac142v_#9\'-ug*p3Hrx7mn08fsykolitbed';$hhvjzur = Array();...
      ./terraform-aws-labs/content-post.php:<?php
      ./dev/siege/html/cache-control.php:<?php
      ./dev/siege/html/cache-control.php:This
       page sets a max-age cache control for <?php echo $secs?> seconds.
       The header looks like this:<br>

       

      En rajoutant /dev/null, on fait croire à grep qu’on travaille sur plusieurs fichiers, donc il va afficher le nom du « vrai » fichier à chaque trouvaille.

      SSH, bastion, éviter le ProxyCommand

      configurer finement SSH : dans le ssh_config de l’utilisateur, j’ai un alias *.domain.tld qui définit un ProxyCommand, soit une commande pour rebondir sur une autre machine. Mais je devais accéder à une machine sur ce domaine sans passer par le bastion :

       

      Host machine1.domain.tld
      ProxyCommand none
      Host *.domain.tld
      ProxyCommand ssh -F ~/.ssh/config-proxy rebond.domain.com nc %h %p

      Récupérer de l’espace disque gratuitement

      Les blocs réservés dans ext4, sur une partition non système on peut réduire le pourcentage par défaut :

       

      df -h /home
      Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
      /dev/sda4        358G   133G    208G  39%  /home
      
      sudo tune2fs -m1 /dev/sda4
      tune2fs 1.44.4 (18-Aug-2018)
      Définition du pourcentage de blocs réservés à 1% (955536 blocs)
      
      df -h /home
      Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
      /dev/sda4        358G   133G    223G  38%  /home

      grep vs find

      La commande find . -name "*.php" -exec grep "<?php" {} /dev/null \; peut se réécrire grep -r --include=’*.php’ ‘<?php’ .

       

      -r est le mode récursif et –include permet de filtrer les fichiers.

      Et si tu veux forcer l’affichage du nom des fichiers, l’option -H le fait.

      ~~~~
      curl -4 -s -G http://localhost:8086/query?db=telegraf&pretty=true –data-urlencode "q=SHOW series"

      Afficher les processus qui consomment du Swap

      Un serveur tabasse régulièrement son swap sans qu’on aie pour l’instant la cause profonde sachant qu’il a largement de quoi rester en RAM pour bosser. Pour afficher quels processus consomment du swap :

       

      for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

       

      UPDATE : version avec awk fait tout le taf sans la boucle for :

       

      awk '/Name/ {printf $2} /VmSwap/ {print " ",$2}' /proc/*/status |sort -k 2 -n -r |less

      Comparer deux arborescences pour détecter des fichiers modifiés

      Une routine crade, lente, mais utile pour tenter de détecter des traces d’attaques sur des fichiers :

       

      find original/ -type d -exec md5sum {} \; |sed -e 's/^original/infected/' |md5sum -c |grep -Ev "OK$"

      Virtualbox, USB3, erreur bizarre lors du l’ajout d’un disque

      Sur le PC du boulot, Full USB3, je dois brancher un disque dur externe à la VM Virtualbox, je me prend un joli fail :

       

       

      En fait, il faut faire attention au type de contrôleur dans la configuration de la VM (nécessite le pack d’extensions à la licence limite) :

       

       

      Faut mettre full USB3 pour tout le monde, et ça marche beaucoup mieux curieusement

      Fusion d’images avec ImageMagick

      Deux problèmes, les photos sont à la verticale et j’aimerais les fusionner. J’aurais pu perdre du temps dans le GIMP nouvelle génération mais j’ai voulu plutôt bricoler en ligne de commande :

       

      convert carte_visite_resto_1.jpg -rotate 270 carte_visite_resto_1_rotated.jpg
      convert carte_visite_resto_2.jpg -rotate 270 carte_visite_resto_2_rotated.jpg
      montage carte_visite_resto_*rotated.jpg -tile x1 -geometry +0+0 carte_visite_resto.jpg
      convert carte_visite_resto.jpg -resize 1920x1080 -quality 85 carte_visite_resto_resized.jpg

      Lancer vlc avec l’utilisateur root

      Par défaut pas le droit, mais c’est possible avec un hack dégueu : sed -i ‘s/geteuid/getppid/’ /usr/bin/vlc

      Désactiver les rétroliens sur vos articles WordPress

      Grosse méthode de bourrin, pratique si vous n’en avez rien à foutre des rétroliens, et que vous avez beaucoup d’articles. Ça se passe dans Mysql :

       

      MariaDB [c0blog]> update wp_posts set ping_status = 'closed';
      Query OK, 1015 rows affected (0.06 sec)
      Rows matched: 3466 Changed: 1015 Warnings: 0

       

      Si vous utilisez des plugins de cache quelconques, vous devrez peut-être avoir à les flusher, je vous recommande d’utiliser l’excellent wp-cli pour ça.

      Tester un port distant sans telnet/netcat/nmap

      $ timeout 2 bash -c '</dev/tcp/91.121.61.180/443 && echo Port is open || echo Port is closed' || echo Connection timeout
      Port is open
      $ timeout 2 bash -c '</dev/tcp/91.121.61.180/444 && echo Port is open || echo Port is closed' || echo Connection timeout
      bash: connect: Connexion refusée
      bash: /dev/tcp/91.121.61.180/444: Connexion refusée
      Port is closed

      Compresser à la volée une image disque

      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

      Rediriger la sortie d’une commande effectuée avec sudo

      sudo ne s’applique qu’à la commande en cours et pas à d’éventuelles redirections. Il faut englober la commande et la redirection sur une nouvelle instance de bash :

       

      sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

      Supprimer le début d’un fichier à partir d’une ligne

      fichier encodé en base64 à la fin. La solution, chercher une ligne de référence à partir de laquelle je conserve tout, et supprime le début :

       

      sed -i.bak '1,/application\/pdf/d' fichier_mail

      Un petit vim pour nettoyer quelques lignes superflues, et on peut décoder :

       

      base64 -d fichier_mail > cv.pdf
      file cv.pdf
      cv.pdf: PDF document, version 1.5

      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 :

       

      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 :

       

      mv ./-fichier-pourri.txt fichier-pourri.txt
      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

       

      Convertir une vidéo en série d’images

      Un petit défi trouvé je ne sais plus où : retrouver une image précise, dans une vidéo où celles-ci défilent très vite. Plutôt que de m’emmerder à lire au ralenti, à repasser 50 fois en espérant voir quelque chose, il « suffit » de convertir et de générer un fichier image par image de vidéo. Pour ça, il faut extraire le nombre de fps de la vidéo en question, et réutiliser ce paramètre pour qu’ffmpeg fasse le boulot :

       

      ffmpeg -i DMdLcMPW4AUQV9t.mp4 -vf fps=27.5 out%d.png

       

      On a ensuite autant de fichiers images qu’il y a d’images dans la vidéo, et celle qu’on recherche va forcément apparaître.

      L’optimisation d’image rapide pour les pressés

      find . -iname "*.png" -exec optipng -o5 -strip all {} \;
      find . -iname "*.jpg" -exec jpegoptim -m90 --strip-all {} \;

       

      Les deux logiciels sont à installer.

      zcat et zgrep

      Avant pour lire un fichier de log compressé, je faisais gzip -d syslog.2.gz puis cat syslog.2 mais ça c’était avant. Maintenant je fais directement zcat syslog.2.gz, je me sens tellement mieux ! Si vous faites un petit dpkg -S zcat sur votre Ubuntu/Debian, vous apprendrez qu’il existe zcat (gzip), xzcat (xz-utils), bzcat (bzip2), elle est pas belle la vie ! Faites un petit dpkg -L gzip, il existe également zgrep, zless, zdiff…

      Effacer le contenu d’un fichier en ligne de commande

      Tout le monde procède différemment pour effacer le contenu d’un fichier en ligne de commande. Moi ça donnait echo > ~/Documents/temp.txt mais l’utilisateur averti remarquera que ça laisse un saut de ligne dans le fichier. J’ai appris que la bonne manière de faire c’est > ~/Documents/temp.txt.

      hgrep

      Lorsqu’on passe sa journée dans un terminal, on se sert beaucoup de l’historique. J’ai un alias tout simple qui me suit depuis de nombreuses années alias hgrep='history | grep -i --color=always'. On le lance ainsi hgrep 'motifrecherché', ça va afficher les entrées de l’historique contenant ‘motifrecherché’ en couleurs. Un petit rien finalement très utile. Pour rappel on peut ré-exécuter une commande (par exemple la 128) de l’historique avec !128.

      lsof pour retrouver les fichiers marqués deleted mais qui prennent encore de la place sur le disque

      lsof -n | grep /var | grep deleted sauve des ours polaires (et des sysadmins). Typiquement un fichier de log n’apparaît plus lorsqu’on fait un ls mais pourtant il prend encore de la place sur le disque, le processus (genre rsyslog) verrouille le fichier qui ne peut pas être « bien » supprimé. Afin que le processus « relâche » ce fichier, il y a plusieurs méthodes dont lui envoyer un signal (pour rsyslog par exemple kill -HUP $(cat /run/rsyslogd.pid)), relancer le service, tuer le processus.

      Récupérer le chemin vers un fichier aisément

      J’utilise de plus en plus la commande git diff fichier1 fichier2, je trouve la sortie très claire. Il y en a qui vont crier au scandale mais je fais encore pas mal de choses dans mon navigateur de fichiers (Caja). J’ai découvert par hasard que si on copie un fichier (dans le navigateur de fichiers) puis qu’on colle dans un terminal, ça colle le chemin vers le fichier… on en apprend tous les jours

       

 

Aucun commentaire

 

Laissez un commentaire