MonWiki

CookBook

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: Vous êtes ec2-18-117-85-73.us-east-2.compute.amazonaws.com

PagePrincipale . memos . CookBook

CookBook



Des trucs et astuces qui ne méritent pas un article...

Générer une paire de clés - courbes elliptiques


ssh-keygen -o -a 256 -t ed25519 -f ~/.ssh/id_ed25519_nom_de_ma_cle -C "addresse@domaine"


Clavier Azerty fr


session en cours :
sudo loadkeys fr
setxkbmap fr


Persistant :
sudo dpkg-reconfigure keyboard-configuration


Astuces commande find


Trouver et effacer les factures qui ont plus de 10 ans :
find /chemin/vers/dossier/factures -type f -mtime +3650 -ls
find /chemin/vers/dossier/factures -type f -mtime +3650 -delete


Trouver et effacer les dossiers vides
find . -type d -empty -ls
find . -type d -empty -delete


Trouver les fichiers présents dans les dossiers cachés sous $HOME, qui n'ont pas été lus depuis plus de 2 ans et qui ont été créés depuis plus de 10 ans :
find $HOME -type f -path '*/.*' -atime +730 -ctime +3650 -print

Remplacer des droits sur plusieurs fichiers. Exemple, autoriser les autres utilisateurs à lire un fichier si les groupes ont le droit de le faire :
find ./ -perm -g=r -exec chmod o=r {} \;

Réaliser une action sur des fichiers et ce, de façon récursive, par exemple avec la commande echo :
find ./ -type f -exec echo {} \;

autre exemple, écraser définitivement le contenu des fichiers du répertoire courant et sous-répertoires (Attention: commande irréversible) :
find ./ -type f -exec shred -u {} \;


Remplacer du texte dans plusieurs fichiers. Cet exemple remplace le texte /home/daniel/developpement/CVSLocal par /home/daniel/CVSLocal dans les fichiers se nommant Root en partant du répertoire courant (./) :
find ./ -name Root -type f -exec sed -i 's/\/home\/daniel\/developpement\/CVSLocal/\/home\/daniel\/CVSLocal/g' {} \;

Avec une expression rationnelle :
find ./ -name Root -type f -exec sed -i -r 's/^\/home\/daniel\/developpement\/CVSLocal$/\/home\/daniel\/CVSLocal/g' {} \;


options sed :
-i : modifier dans le fichier (si absent, affiche seulement)
-r : expression rationnelle

Remplacer une adresse IP dans tous les fichiers de configuration. Attention aux effets de bords, par exemple 's/192\.168\.122\.1/192.168.122.2/g' remplace 192.168.122.1 par 192.168.122.2, mais également 192.168.122.19 par 192.168.122.2 ...
sudo find /etc -type f -exec grep -l "10.0.0.203" {} + | sudo xargs sed -i 's/10\.0\.0\.203/10.0.0.103/g'
sudo find /etc -type f -exec grep -l "192.168.122.1" {} + | sudo xargs sed -i 's/192\.168\.122\.1/192.168.122.2/g'


Renommer plusieurs fichiers

exemples :
rename 's/img/image/' *.jpg
rename 's/\.JPG/.jpg/' *.JPG
rename 's/.*Dossier (\d{4}).*important-(.{3}).*/Dossier_$1_important-$2.xls/' *.xls


option -n pour juste voir le résultat.


Renommer plusieurs images en incrémentant

j=0;for i in *.jpg;do let j+=1;mv "$i" "image$j.jpg";done

Retourner automatiquement les images par lot (en fonction des données EXIF)



for f in *.jp*g *.JP*G; do
done


Une fois terminé :

rm original_*.*


Supprimer données EXIF

exiftool -all= *.jp*g *.JP*G ; rm *_original

Redimensionner des images par lot


Installer imagemagick:
sudo apt install imagemagick

Exemples:
mogrify -resize 800x600 -verbose *.jpg *.JP*G
mogrify -resize 50% -verbose *.jpg *.JP*G


on peut également modifier la qualité:
mogrify -resize 800x600 -quality 96 -verbose *.jpg *.JP*G

Supprimer les espaces en fin de lignes


sed -i 's/\s*$//' *.py


Récursif :

find -name '*.py' -exec sed -i 's/\s*$//' {} \;


Supprimer les fins de lignes


extrait de la FAQ de sed


tr -d '\n' < file # use tr to delete newlines
sed ':a;N;$!ba;s/\n//g' file # GNU sed to delete newlines
sed 's/$/ foo/' file # add "foo" to end of each line


Exemple, on veut remplacer le texte suivant:


par:
<translation type="unfinished"></translation>

dans un fichier de translation de Qt (.ts) voilà la commande à utiliser:

sed ':a;N;$!ba;s/<translation>\n\s*<\/translation>/<translation type="unfinished"><\/translation>/g' -i *.ts



Surveiller les appels système utilisés par un programme


strace -f ./mon_application


Archivage


Archivage incrémentielle avec exclusion:

tar -cvzf backup.tar.gz -X exclusion.txt -g

-g : sauvegarde incrémentale
-X : exclure, indiquez un fichier contenant les fichiers à exclure, par exemple:
*~
*.bak
*/cache/*
*/Trash/*
*/tmp/*


Découper une archive:
tar -cvz rep/ | split - -b 2000m backup_

recoller les morceaux:
cat backup_* > backup.tar.gz

Outils Disque dur


créer une partition:
fdisk device

Tester vitesse du disque dur:
hdparm -t device

exemple:
hdparm -t /dev/sda7

/dev/sda7:


Tester si des blocs sont défectueux
badblocks -n -s -v device

Tester et écrire dans l'inode des blocs défectueux:
e2fsck -c device


Copier une partition
exemple d'une source sda1 et d'une cible sdb1. Les partitions doivent bien sûr ne pas être montées.

utilisation de la commande dd:
dd if=/dev/sda1 of=/dev/sdb1 bs=512

Si les partitions sont de tailles différentes, il faut mettre à jour la taille de la partition (sinon l'espace disponible affiché est incorrect):


Depuis quand mon système a démarré ?

uptime



Partager une console

Exemple d'utilisation: lors d'une session ssh, montrer ce que l'on tape à un utilisateur connecté localement sur la machine

L'utilisateur local lance la commande suivante : screen
et l'utilisateur distant: screen -x

Les deux utilisateurs sont maintenant sur la même console (lecture/ecriture).

Petit serveur web en Python


Se placer dans le répertoire que l'on souhaite partager puis
python3 -m http.server 8080


Bloquer mise à jour d'un paquet


Pour bloquer la mise à jour d'un paquet:
echo "linux-headers-2.6.32-30-generic hold" | dpkg --set-selections

Pour annuler (mettre à jour):
echo "linux-headers-2.6.32-30-generic install" | dpkg --set-selections

Visualiser les paquets bloqués:
dpkg --get-selections | egrep "hold$"

Enlever les noyaux N-*


sudo apt-get purge $(dpkg -l | awk '{print $2}' | grep -E "linux-(image|headers|modules|modules-extra)-$(uname -r | cut -d- -f1).*" | grep -v $(uname -r | sed -r -e 's:-[a-z]+.*::'))

Supprimer les fichiers de configuration de programmes désinstallés


sudo apt-get purge $(dpkg -l | grep -E '^rc\s+' | awk '{print $2}')

ou

dpkg -l | grep -E '^rc\s+' | awk '{print $2}' | xargs -n 1 -r sudo apt-get -y purge

Lister les paquets non officiel Debian


apt list '?installed ?not(?origin(Debian))'

Nettoyer un fichier GPX


Supprime la datation et arrondi les coordonnés et l'altitude.

C'est moche, mais ça fonctionne:
sed '/<time>.*<\/time>/d' circuit6_origin.gpx | sed 's/\( l[ao][tn]\)="\(\-*[0-9]*\.[0-9][0-9][0-9][0-9][0-9]\)[0-9]*/\1="\2/g' | sed 's/<ele>\([0-9]*\)\.[0-9]*<\/ele>/<ele>\1<\/ele>/' > circuit6.gpx


Désactiver/activer mise à jour automatique sur Ubuntu/Debian


dpkg-reconfigure -plow unattended-upgrades

Mettre en pause la machine à une certaine heure

echo "sh -c 'echo mem > /sys/power/state'" | at 02:00

Mettre à jour Firmwares UEFI sous Linux


https://www.linuxtricks.fr/wiki/fwupd-mettre-a-jour-les-firmwares-et-uefi-depuis-linux




Pages utiles: RechercheTexte, TableauDeBordDeCeWiki
Flux RSS: Wiki, Commentaires
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]