MonWiki

CookBook

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: Vous êtes ec2-3-234-177-119.compute-1.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"


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)


exifautotran *.jp*g
Il est important de l'appliquer en premier avant toute autre modification (notamment redimensionnement)

Si ne fonctionne pas :

for f in *.jp*g; do if [ -n "$(exif $f | grep -E 'Orientation.*Droit-haut')" ]; then convert "$f" -rotate 90 "$f"; fi ; done


Supprimer données EXIF

exiftool -all= *.jp*g && rm *_original

Redimensionner des images par lot


Installer imagemagick:
sudo apt-get install imagemagick

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


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


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

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


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 {} \;


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
sudo python -m SimpleHTTPServer 80


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

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


Remplacer iptables.service par iptables-persistent/netfilter-persistent


Pour remplacer ip*tables.service ( https://github.com/danielrocher/systemd-iptables ), par les outils natifs à Debian/Ubuntu, tout en gardant les règles de filtrage :

apt install iptables-persistent netfilter-persistent &&
systemctl enable netfilter-persistent &&
systemctl disable iptables.service &&
systemctl disable ip6tables.service &&
systemctl stop iptables.service &&
systemctl stop ip6tables.service &&
mv /etc/iptables/iptables.rules /etc/iptables/rules.v4 &&
mv /etc/iptables/ip6tables.rules /etc/iptables/rules.v6 &&
systemctl restart netfilter-persistent &&
rm /etc/iptables/*.sh &&
rm /etc/systemd/system/iptables.service &&
rm /etc/systemd/system/ip6tables.service &&
systemctl daemon-reload &&
echo "tout c'est bien executé"




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