Commandes de base

De MicElectroLinGenMet.

Sommaire

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:

  1. 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


Mail

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

Administration wiki