====== Commandes et structures utiles GNU/Linux ======
===== Suppression de fichiers/dossiers listés dans un fichier =====
Commande pour supprimer des fichiers/dossiers listés dans un fichier texte. Tout cela en une seule commande.
grep -Ev "^($|#)" /tmp/liste_fichier_a_supprimer_avec_chemin_absolu.txt | xargs -n 1 rm -rf
La commande saute les lignes vides ou celles qui commencent pas un commentaire.
Avant d'exécuter la commande, lancer la même commande avec ''ls -l'' au lieu de ''rm -rf'' pour s'assurer du résultat.
===== Diff de deux listes de paquets pour lister les paquets à supprimer =====
Liste de paquets créée avec la commande suivante.
rpm -qa --qf "%{name}-%{version}-%{release}.%{arch}\n" | sort > /root/20111017-lstpnew
Diff entre les deux fichiers et création de la liste à passer à ''yum remove'' par exemple.
diff /root/20111017-lstp /root/20111017-lstpnew | grep ">" | sed -e "s/>//" | sed -e :a -e 'N;s+\n++;ta'
===== Création de fichiers de test avec dd =====
Utilisation de dd pour créer des fichiers aléatoires.
Créer un fichier de 100MB avec des blocs de 1MB.
dd if=/dev/urandom of=/chemin/fichier bs=1MB count=100
===== Commande wget =====
Récupérer/aspirer un site avec la commande wget en passant par un proxy.
wget -r -l 20 --http-user=user --http-password=mdp http://localhost/site_a_recuperer
Récupération uniquement de l'arborescence d'un site Web.
wget -r -l 20 --http-user=user --http-password=mdp --delete-after http://localhost/site_a_recuperer
Avec l'option --delete-after le téléchargement des fichiers est réalisé mais ils sont immédiatement supprimés. Ceci permet de créer l'arborescence totale des dossiers sans le contenu.
C'est un moyen détourné pour exporter uniquement une arborescence de dossier. Cette commande est utilisée à l'origine pour simplement remplir un cache web. Dans ce cas, on veut simplement faire transiter les données dans le cache mais pas les conserver.
===== Arrêter les processus qui empêchent le démontage =====
fuser -mv /mnt/destination
fuser -mkv /mnt/destination
===== Afficher un fichier en octale ou hexadécimal =====
Afficher un fichier en octal.
od
Afficher un fichier en hexadécimal.
od -t x
===== Afficher la liste des modules installés de PHP =====
php -m
===== Gérer les librairies partagées =====
ldconfig -p | grep libXt.so.6
===== Ping d'une liste d'hôtes d'un réseau =====
for ip in `seq 1 255` ; do ping -c 2 172.20.15.$ip ; done > machine_list.txt
===== Version driver réseau =====
Connaître la version du driver réseau d'une carte Ethernet.
ethtool -i eth0
===== Substitutions de termes sur une liste de fichiers triés =====
Commande utilisé pour changer un namespace sur toutes les pages dokuwiki qui contiennent le terme recherché.
grep -i -r -o sub-sys * | awk -F : '{print $1}' | uniq | xargs -n 1 sed -e 's+doc_imf:sub-sys::+imf:docs:+g'
===== Extended ACL =====
Modification de l'accès du ''/home/usertest'' pour qu'il soit accessible en lecture par le compte usertest2.
setfacl -m user:usertest2:r-x /home/usertest
getfacl /home/usertest
getfacl --omit-header /home/usertest
FIXME à tester
Appliquer des ACL d'un dossier vers un autre directement.
getfacl | setfacl
getfacl | setfacl -f -
getfacl /home/stephane.boireau/Docs/stephane.boireau.txt > fichiersteph.acl
se3pdc:~# cd /
se3pdc:/# setfacl --restore=/root/fichiersteph.acl
===== Changer de clavier en commande =====
Pour basculer du clavier en Azerty (fr) ou en Qwerty (us) entrer les commandes suivantes.
setxkbmap fr
setxkbmap us
Si il n'y a pas de serveur X sur la machine, on pourra utiliser ces commandes.
loadkeys fr
loadkeys us
Sous Windows, la combinaison est Alt+Shift qui permet de passer d'un mode à l'autre.
===== Conversion d'un fichier d'un charset vers un autre =====
iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./oldfile.htm > ./newfile.html
===== Ventilateur carte graphique ATI =====
Afficher la vitesse du ventilateur.
aticonfig --pplib-cmd "get fanspeed 0"
Modifier la vitesse à 60%.
aticonfig --pplib-cmd "set fanspeed 0 60"
===== Défilement écran =====
Arrêter et reprendre le défilement à l'écran. Pratique pour le boot par exemple.
Ctrl+s (arrête le défilement à l'écran)
Ctrl+q (relance le défilement à l'écran)
===== Connaitre IP publique =====
Commande qui récupère l'ip publique depuis une machine.
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
===== Vérifier la validité de structure XML =====
xmlwf
===== Suppression de paquets de langues inutiles Mandriva =====
rpm -qa | grep "^aspell" | grep -v aspell-0.60 | grep -v aspell-fr | grep -v aspell-en | xargs -n 1 urpme
rpm -qa | grep "^firefox" | grep -v firefox-5.0.1 | grep -v firefox-fr | xargs -n 1 urpme
rpm -qa | grep "^kde-l10n" | grep -v kde-l10n-fr | grep -v kde-l10n-en | xargs -n 1 urpme
rpm -qa | grep "^libreoffice-l10n" | grep -v libreoffice-l10n-fr | xargs -n 1 urpme
rpm -qa | grep "^mozilla-thunderbird" | grep -v mozilla-thunderbird-5.0.3 | grep -v mozilla-thunderbird-fr | xargs -n 1 urpme
rpm -qa | grep "^myspell" | grep -v myspell-fr_FR | xargs -n 1 urpme
urpme voikko-fi
rpm -qa | grep "^locales" | grep -v locales-2.13 | grep -v locales-fr | grep -v locales-en | xargs -n 1 urpme
urpme --auto-orphans
===== Affichage processus =====
ps -eo comm,pid,user
grep --color denied /var/log/audit/audit.log
ps -fu
===== Bind mount =====
Test bind mount sur un FS CIFS existant dans l'arborescence d'un compte.
[root@srv01 ]# mkdir -p /data/info/passage/mnt/TRM_DHT
[root@srv01 ]# mount -o bind /mnt/TRM_DHT /data/info/passage/mnt/TRM_DHT/
===== SElinux =====
Voir permissions SElinux
ll -Z /var/ftp
===== Crash commandé =====
Déclencher un crash de la machine.
echo c > /proc/sysrq-trigger
===== Informations processus =====
Voir les infos du processus.
/proc/22413/fd
====== Structures GNU/Linux ======
===== Gestion des logs en shell =====
Pour intercepter tout ce qui se passe à l'écran dans un ficher de log sans ajouter une redirection (| tee -a $LOG) à chaque instruction.
#!/bin/bash
LOG=/var/log/fichierdelog.log
(
echo -n « Passage de /usr en ro »
mount -o remount, ro /usr
echo -n "Désactivation de l’USB"
modprobe -r USB
) 2>&1 | tee -a $LOG
exit 0
Plus d'informations : http://stackoverflow.com/questions/692000/how-do-i-write-stderr-to-a-file-while-using-tee-with-a-pipe
===== Script sysv =====
Fichier qui décrit comment créer un script sysv propre.
/usr/share/doc/initscripts-9.03.40/sysvinitfiles