Ping sur un sous-réseau avec bash

Afin de détecter si des adresses IP d’un réseau sont disponibles ou occupés, il peut être utile de faire un ping sur un sous-réseau ou sur une plage d’adresses donnée.

Par exemple sur un réseau local derrière une box d’accès, le principe est d’effectuer un ping sur les adresses ip possibles :

$ ping 192.168.1.2
$ ping 192.168.1.3
...

Faire une boucle simple

ping boucle avec bash for

Avec une boucle bash, on peut utiliser la commande suivante :

$ for ip in `seq 2 254`; do ping -c1 -t1 192.168.0.${ip}; done

Le résultat n’est pas très parlant et l’exécution assez lente à cause des timeouts possibles.

Améliorer la boucle

Pour améliorer la commande, on va filtrer le résultat de la commande ping et se servir du code de retour de la commande pour afficher les IP qui ont répondu.

$ for ip in `seq 2 254`; do (ping -c1 -t1 192.168.1.${ip} > /dev/null 2>&1 && echo 192.168.1.${ip} &); done

ping boucle avec bash for fork

 

 

ffmpeg: commandes utiles

Extraire les images d’une vidéo

ffmpeg -i vI5pVmJz7Co.mp4 -r 1/1 snapshots/snap%04d.jpg
  • -i le fichier source
  • snapshots/snap%04d.jpg le nomage des images extraites.

Assembler des images pour faire une vidéo

ffmpeg -start_number 2789 -i _MG_%04d.JPG -c:v libx264 -pix_fmt yuv420p jour1.mp4
  • -start_number 2789  la première image à traiter est _MG_2789.JPG
  • -c:v libx264 utiliser l’encodeur utilise le codec libx264
  • -qp 0 qualité maximale
  • -pix_fmt yuv420p le format des pixels
  • jour1.mp4 le fichier de sortie

 

Convertir une vidéo

ffmpeg -i A017_C001_0903K7.mov -qscale 1 A017_C001_0903K7.mp4
  • -qscale 1 qualité maximale. Ce chiffre est compris entre 1 (meilleure qualité/fichier large) et 31 (qualité minimale/fichier plus petit).
  • le format de sortie est déduit de l’extension

Supprimer le son d’une vidéo

ffmpeg -i home.mp4 -vcodec copy -an home.mp4
  • -vcodev copy permet de ne pas ré-encoder la vidéo

Retailler des images en masse avec mogrify

Mogrify est un outil de la suite ImageMagick qui permet de manipuler des images.

Il permet de manipuler des images en masse, ce qui peut-être utile lorsque vous manipuler des bibliothèques importantes.

Par exemple, suite à un shooting, j’ai une centaine de photos en TIF à disposition qui pèsent chacune une centaine de mégas. Ce n’est pas très pratique pour avoir un aperçu rapide de ce que l’on dispose.

Grâce à mogrify je peux créer des aperçus JPEG de moindre poids facilement manipulables.

Exemple de commande :

mogrify -format jpg -quality 81 -resize 50% -path SD/ *.tif

Ici, je prends toutes les images TIF (*.tif) du répertoire courant et je les convertis en JPEG (-format jpg) avec une qualité de 81% (-quality 81) tout en les retaillant à 50% de leur taille originale.

Enfin je les place dans un sous-répertoire (-path SD/) pour les distinguer de mes originales.

 

Curl: silence, on dort

curl-silencieux

Lors de l’utilisation de curl dans des tâches cron, il est parfait nécessaire de le rendre silencieux.

Pour cela, il faut utiliser le paramètre « -s » pour rendre curl silencieux et rediriger la sortie standard vers /dev/null

Exemple :

curl -s http://fr.charles.lescampeurs.org/ > /dev/null

 

Ajouter une bordure à une image avec ImageMagick

Imagemagick bordure

Pour les besoins de la création d’un PDF contenant un ensemble de screenshots, il fallait que j’ajoute une petite bordure sur chaque screenshot afin de bien délimiter les images sur fond blanc.

Convert permet de faire cela facilement avec l’option -border et -bordercolor.

Pour traiter un ensemble d’images, utiliser simplement une boucle for avec bash.

for file in `ls *.png`; do 
    convert ${file} -bordercolor "#dfdfdf" -border 1x1 ${file}; 
done
  • -bordercolor définit la couleur de votre bordure
  • -border définit la taille de la bordure, ici 1 pixel de chaque côté

 

OSX : connaitre la version en ligne de commande

Vous pouvez avoir besoin de connaitre la version courante pour les besoins d’un script ou tout simplement vouloir la connaitre rapidement en ligne de commande.

Un utilitaire sw_vers est livré en standard et vous affiche la version et le build courant :

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.10.5
BuildVersion: 14F1605

Des paramètres existent pour obtenir directement l’information dont vous avez besoin :

$ sw_vers -productName
Mac OS X
$ sw_vers -productVersion
10.10.5
$ sw_vers -buildVersion
14F1605

 

Mysql: dumper une base à travers ssh

J’ai un serveur de QA dont le disque n’a pas assez d’espace libre pour faire un dump d’une base mysql. Pour récupérer ce dump et transférer le service sur un autre serveur, j’ai redirigé le dump à travers ssh directement sur la nouvelle machine.

mysqldump --skip-extended-insert -u user -p dbname | ssh user@serveur 'cat >~/database.dump.sql'

Avec –skip-extended-insert pour ne faire qu’un INSERT sql par ligne.

 

Crypter et décrypter un fichier avec gpg (OpenPGP) avec un mot de passe

Pour crypter et décrypter un fichier avec un password, vous pouvez utiliser l’outil gpg disponible en ligne de commande sur la plupart des plateformes.

Crypter un fichier

$ cat test.txt
salut
$ gpg -c test.txt
Entrez la phrase de passe :
Répétez la phrase de passe :

$ rm test.txt

Un fichier binaire test.txt.gpg a été créé. Pour le décrypter :

$ gpg test.txt.gpg
gpg: données chiffrées avec CAST5
gpg: chiffré avec 1 phrase de passe
gpg: Attention : l'intégrité du message n'était pas protégée

Le fichier test.txt a été recréé :

$ cat test.txt
salut