Commandes de base
De MicElectroLinGenMet.
Alias
alias l="ls -lhF --color=auto" alias lc="ls -Ca --color=auto" alias x=startx
Connexion site FTP automatique
ftp -n -i 192.168.0.1 << FINFTP user loginftp motdepass binary lcd /home/public cd /pub/antivirus/datfiles/4.x mget dat* quit FINFTP log='/var/log/virus.log' echo 'Telechargement antivirus le ' >> $log date >> $log
Commande sed
Syntaxe sed pour remplacer une chaine de caractere dans un fichier.
Ici recherche la ligne commencant par "#m1" et la remplace par "m1":
sed s/^#m1/m1/ inittab
Et inversement:
sed s/^m1/#m1/ inittab.server
Remplace la valeur chaine derrière IPADDR= par la valeur de la variable $IP et renvoi dans le fichier d'origine.
sed "s/\(IPADDR=\).*$/\1$IP/" /root/ifcfg-eth0.bak > /etc/sysconfig/network-scripts/ifcfg-eth0
Supprime toutes les lignes contenant "local3.info" du fichier test
sed /local3.info/d test
Conversion fichier assembleur TASM (windows) en fichier TPASM (linux).
# include nomfichier ou .include nomfichier => include "nomfichier" # #define ROUTINE => ROUTINE equ 1 # #ifdef => ifdef # #endif => endif # label equ Px.y => label equ Px_y sed 's/^[ ]*#define[ ]*\(.*\)$/\1 equ 1/' $tasm_file | \ sed 's/^[ .]*include[ ]*\(.*\)$/ include "\1"/' | \ sed 's/#ifdef/ifdef/' | \ sed 's/#endif/endif/' | \ sed 's/^\(.*\)\.\([0-9].*\)$/\1_\2/' > $tpasm_file
Commande awk
Documentation: La commande awk
Affiche adresse IP de la passerelle réseau :
/sbin/route -n | grep ’^0\.0\.0\.0 ’ | awk ’print $2’
Affiche plusieurs champs :
ls -l | awk ’print $7,$6,$8,$9’
Avec un séparateur différent :
echo $ville | awk -F " :" ’ print $1 ’
Exécution d’une commande :
who -u | grep login | awk ’cmd="kill -1 "$7 ;system(cmd)’
Avec une varaiable :
awk -v machine=$machine ’print machine,$3,$9’ fichier
date +"%M" | awk ’print substr($1,2,1)’
lsvg $VG|grep FREE | awk -v vg=$VG -v occ=$OCC '{print "VG", vg, "Espace libre: " $7,$8, "Occupation",occ "%"}'
Supprime la première ligne avec "NR!=1" (ici correspond à l'entete)
# df -k /tmp | awk 'NR!=1 { print $4 }'
Affiche l'ip sans le ':' de la ligne from (64 bytes from 10.179.120.126: icmp_seq=0 ttl=250 time=3 ms)
# ping -c 1 nutella | awk '/from/ { sub(/:/,"",$4); print $4 }'
La 2ième ligne du df renvoie: "/dev/vx/dsk/tooldg/lv_tma 4733" Voir utilisation du split pour récuperer le nom du lv: lv_tma
# df -e /exec/products/tma | awk ' NR!=1 { split($1,lv,"/")
if ( lv[6] != "") print lv[6]
else print lv[5] }'
# awk '{print " vxedit -g opsdg -v rename " $9,$10}' /var/tmp/raw_devices.txt
vxedit -g opsdg -v rename rbs_1_012 tbsD_LM1_152
vxedit -g opsdg -v rename rbs_1_011 tbsD_LM1_153
vxedit -g opsdg -v rename rbs_1_010 tbsD_XL1_306
vxedit -g opsdg -v rename rbs_1_009 tbsD_XL1_307
vxedit -g opsdg -v rename rbs_2_012 tbsD_XL1_308
vxedit -g opsdg -v rename rbs_2_011 tbsD_XL1_309
vxedit -g opsdg -v rename rbs_2_010 tbsD_XL1_310
vxedit -g opsdg -v rename rbs_2_009 tbsD_LL6_129
vxedit -g opsdg -v rename rbs_2_008 tbsD_LL6_130
vxedit -g opsdg -v rename rbs_2_007 tbsD_LL6_131
vxedit -g opsdg -v rename rbs_2_006 tbsD_LL6_132
vxedit -g opsdg -v rename rbs_2_005 tbsD_LL6_133
vxedit -g opsdg -v rename rbs_2_004 tbsD_LL6_134
vxedit -g opsdg -v rename rbs_2_003 tbsD_LM6_092
vxedit -g opsdg -v rename rbs_2_002 tbsD_LM6_093
vxedit -g opsdg -v rename rbs_2_001 tbsD_LM6_094
# nawk -v hote=xjasmin3 -F: $2 != "NP" && $2 !="*LK*" && $2!="" { print hote,$1,$2} /etc/shadow
Monter les systèmes de fichiers de chacun des groupes de volumes :
# lsvg -l vg_name | awk '$6~"closed" && $NF~"^/" {print "mount "$NF}' | sort | sh
Tri de fichier
grep " P S " AIX_errpt.log | sort | awk '$1 != prev { print; prev = $1 }' | more
Stope les connexions user
who -u | grep $i | awk '{cmd="kill -1 "$7;system(cmd)}'
Commande expr
Test sur nombre à virgule dans script Bash.
$ TEMP="-16.1" $ if ! expr $TEMP \> -16.0 > /dev/null; then echo "TEMP est supérieur à -16."; fi $ TEMP="-15.9" $ if ! expr $TEMP \> -16.0 > /dev/null; then echo "TEMP est supérieur à -16."; fi TEMP est supérieur à -16.
Commande md5sum
md5sum produit, pour chaque fichier d'entrée, une "empreinte digitale" sous forme de compte-rendu de 128 bits.
Permet de vérifier la coherence d'un fichier aprés téléchargement avec l'empreinte original. Voir équivalent md5sum.exe sous Windows.
Commande tcpdump
Affiche adresse IP machine lancant des requêtes icmp (ping ...)
tcpdump -n icmp
Capture packet IP port ftp (21) sur machine 192.168.0.25 en hex. et ascii.
tcpdump -s 0 -x -X dst host 192.168.0.25 and port 21
avec une version 3.6.1 de tcpdump, une version 3.4.? ne gére les options -s 0 (pas de longueur limite pour les packets) et -X (Affiche en ascii) Autre exemple:
tcpdump tcp and port 21 -i eth0 tcpdump -s 1024 -x -X dst host 192.168.0.202 and port 23 -i eth0 tcpdump -i eth0 dst host 192.168.0.230 and port 514 and udp
Commande wget
Permet de capturer des fichiers web en utilisant le protocol HTTP ou FTP. (Equivalent aspirateur web) Charge la page txip.pl dans le fichier /tmp/rxip (et execute en meme temps le script perl)
wget http://nom_machine/cgi-bin/txip.pl -O /tmp/rxip >/dev/null 2>&1
Télécharge un fichier en ftp en tâche de fond (Q2): wget ftp://login:pass@192.168.0.6/../../groups/home/nom_fichier & Récupère le site (mode récursif) avec login et pass si nécessaire).
wget -km -np http://login:pass@monsite
-m, --mirror shortcut option equivalent to -r -N -l inf -nr -np, --no-parent don't ascend to the parent directory -k, --convert-links Convert the links in the document to make them suitable for local viewing.
Commande route
Ajouter une route par defaut:
route add default gw 192.168.1.2
Supprimer la route par défaut:
route del default
Ajouter une route d'un réseau vers une interface.
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
Ajouter une route d'une machine vers une interface.
route add -host 192.168.0.27 eth0
Ajouter une route d'un réseau vers une passerelle du réseau sur interface eth0:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.240 dev eth0
Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.2.0 192.168.1.240 255.255.255.0 UG 0 0 0 eth0 Pour supprimer cette route:
route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.240
Réseau: ntp
Serveur / Client NTP (Mise à l'heure d'un serveur) Installer RPM xntp Lancer la commande
ntpdate -b -s canon.inria.fr
avec rc.local ou/et cron Sinon utiliser le daemon xntpd (gourmand)
clock --systohc (pour mettre l'horloge RTC à jour en fonction de date)
Commande cut
La commande cut permet d'afficher des zones spécifiques d'un fichier. Par exemple :
cut -c1 /etc/passwd
affichera la première colonne du fichier /etc/passwd. Il existe d'autres spécifications: Option Signification -c1-5 Permet de sélectionner les colonnes 1 à 5. -c14- Permet de sélectionner de la colonne 14 à la dernière. -c1-3,14-18 Permet de spécifier plusieurs plages de colonnes. On peut également spécifier un séparateur de champs avec l'option -d. Par exemple :
cut -d: -f6 /etc/passwd
affichera le 6eme champ du fichier /etc/passwd, dont le séparateur de champs est le caractére double point (``:).
Console
setterm -foreground white -bckground blue
Commande date
Affichage par défaut (voir config. locale pour affichage en français)
$ date
Wed Jan 8 10:39:32 CET 2003 Affichage formaté
$ date +%Y_%m%d_%k%M 2003_0108_1032
Affiche à la norme RFC-822
$ date -R Wed, 8 Jan 2003 10:35:43 +0100
Date formatée modif. fichier
$ date +%Y_%m%d_%H%M -r fichier 2002_1206_0947
Renommer fichiers avec le format yyyy_mmdd_hhmmss-x.txt
$ for i in *.txt; do j="`date +%Y_%m%d_%H%M%S -r "$i"`-1.txt"; echo "$i" -- $j;cp "$i" test/$j; done
Numéro de la semaine courante:
$ date +%W
Affiche timestamp date courant.
$ date +%s 1154724981
Affiche timestamp date donnée.
$ date +%s -d 20060715 1152914400
Affiche la date 180 jours ou 3 ans avant date courante.
$ date --date='180 days ago' $ date --date='3 years ago'
Commande df / du
df -h donne l'occupation des partition du -h donne l'occupation du répertoire courant. du -sh /usr
Affiche l' espace utilisé par le répertoire /usr seulement.
Commande fuser
Permet d'identifier les processus qui utilisent un fichier ou ressources:
[dan@vesta dan]$ fuser -av /dev/pts/0 USER PID ACCESS COMMAND /dev/pts/0 dan 905 f.... bash dan 961 f.... fuser
Donne le PID qui ouvre le port 119:
fuser -v -n tcp 119
Locales
Localisation et support des langues nationales Sous Debian lancer
dpkg-reconfigure locales
et choisir une locale française (fr_FR@euro ISO-8859-15)
Ou à la main éditer le fichier
/etc/locale.gen
et rajouter la ligne
fr_FR@euro ISO-8859-15
Relancer "locale-gen" pour prise en compte.
Rajouter la variable LANG dans ~/.bash_profile avec la ligne
export LANG="fr_FR@euro"
pour franciser certaines appli. ex. pour date:
$ date jeu jan 9 10:51:46 CET 2003
Montage d'un fichier ISO (image CD)
mount -t iso9660 -o loop /mnt/rack/install.iso /mnt/iso
Montage partage Netbios (Samba)
Dans /etc/fstab:
/serveur/share /mnt/nt smbfs user=nom,passwd=secret,domain=ledomaine
En manuel:
mount -t smbfs -o username=nom,password=secret //serveur/share /mnt/nt
Montage partition FAT
Dans /etc/fstab:
/dev/hdc1 /mnt/data vfat defaults,auto,user,uid=800,gid=800 0 0
Le répertoire /mnt/data appratiendra à l'utilisateur de uid 800.
Montage proc USB
mount -f usbdevfs none /proc/bus/usb $ grep usb /etc/fstab none /proc/bus/usb usbdevfs defaults 0 0
ReMontage de la partition / en RW
# mount -o remount,rw /
syslog
$syslogd -m 0 -r
L'option -r permet de recevoir des messages du réseau. Rotation des log système: logrotate lancé tous les jours dans cron.daily (Mdk) Contenu de logrotate:
#!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf
sudo
/etc/sudoers à editer avec visudo: Ligne rajoutée:
- User privilege specification
root ALL=(ALL) ALL dan vesta = NOPASSWD: /usr/bin/apt-get, /usr/sbin/tcpdump, /bin/mount, /bin/date, /sbin/modprobe, /sbin/halt, /sbin/reboot
hexdump
[dan@hestia](/opt/rip)$ echo 'e' | hexdump -C 00000000 65 0a |e.| 00000002
Envoie de mail en ligne de commande :
echo "ma ligne de texte" | mail -s "mon sujet" adresse@fai.ext
cat monfichier.txt | mail -s "mon sujet" adresse@fai.ext
Avec piece jointe (binaire) :
uuencode fichier nom_piece_jointe | mail -s "Mon sujet" adresse@fai
patch
Test du patch :
patch -p1 -s -E --dry-run < it87_manual_and_auto_pwm_2.6.10.patch
Application du Patch :
patch -p1 -s -E < it87_manual_and_auto_pwm_2.6.10.patch
Si la sortie produit un resultat c'est que les sources du noyau ont un problème.
Commande: hexdump
hexdump -C beep.sh 00000000 2f 75 73 72 2f 62 69 6e 2f 62 65 65 70 20 2d 66 |/usr/bin/beep -f| 00000010 20 38 30 30 20 2d 6c 20 35 30 30 20 2d 72 20 33 | 800 -l 500 -r 3| 00000020 20 2d 64 20 33 30 30 0a | -d 300.| 00000028
echo "Test commande" | hexdump -C 00000000 54 65 73 74 20 63 6f 6d 6d 61 6e 64 65 0a |Test commande.| 0000000e
Commande: bc
# echo "4851*10" | bc 48510
# echo "scale=2;4805/4851*100" | bc 99.00
Lancement d'un 2ième windows manager
startx -- :8
sur la console 8
Première édition Janvier 2000
