commandes linux

Upload: gabriel-chollet

Post on 14-Oct-2015

73 views

Category:

Documents


10 download

TRANSCRIPT

  • Commandes Linux apt

    C'est le gestionnaire de paquet sous les distributions Debian & drives.

    Le fichier de configuration des dpts (main, contrib, universe, multiverse, etc) est /etc/apt/sources.list. Les paquets tlchargs sont stock dans un cache situ dans/var/cache/apt/. Les commandes utiles :

    apt-get update pour mj la liste des paquets apt-get upgrade pour installer les dernires mj ; les recommandations

    prconisent d'utiliser apt-get safe-upgrade, apt-get dist-upgrade ou apt-get full-upgrade (selon les distributions et l'action dsire).

    apt-get install pour installer le paquet apt-get remove [purge] pour dsinstaller le paquet [et aussi ses

    fichiers de config]

    apt-get clean supprime des paquets tlchargs du cache apt-get autoclean supprime les archive obsoltes apt-cache show pour afficher les informations relatives au paquet apt-cache show pour rechercher la chaine dans la liste des tous les

    paquets aptitude est un driv plus rcent d' apt, qui fonctionne de manire similaire avec la plupart du temps le mme argument (e.g. aptitude install ; aptitude search, etc). Liens :

    http://ubunteros.tuxfamily.org/spip.php?article177 arp

    C'est une commande qui permet de voir la table de correspondance @IP/@MAC.

    Pour avoir toutes les entres ARP de la table

    arp -a

    Pour supprimer une entre de la table

    arp -d

    Pour ajouter une nouvelle entre dans la table

    arp -s

  • aspell Vrificateur d'orthographe interactif en ligne de commande.

    aspell check toto.txt

    Pour l'utiliser de faon non-interactive :

    aspell list < toto.txt

    Pour rechercher un mot rapidement dans le dictionnaire, on utilise la commande look.

    at Permet de programmer l'excution d'une tche une heure donne (une seule excution, la diffrence cron) La syntaxe est at heure jour ; puis on saisi une commande par ligne ; et enfin on quitte l'outil par un ctrl+d. Le jour n'est pas obligatoire ; par dfaut on utilise la date du jour courant (at 14:45 10/19/06 quivaut at 14:45 si on est le 19 octobre 2006). Il est possible de compter par rapport l'heure/la date courante : at 15:00 + 3 days programme une commande pour 15h00 dans 2 jours (marche aussi avec l'heure). date

    jeudi 19 octobre 2006, 14:50:41 (UTC+0200)

    at 14:52

    warning: commands will be executed using /bin/sh

    at> echo 'toto'

    at> echo 'tata'

    at>

    job 1 at Thu Oct 19 14:52:00 2006

    atq

    1 Thu Oct 19 14:52:00 2006 a dude

    Comme on peut le deviner, atq permet d'afficher la queue des commandes programmes. Pour supprimer l'entre 1 :

    atrm 1

    On peut utiliser les fichier /etc/at.allow et /etc/at.deny pour grer des permissions d'accs la commande at.

    awk C'est une commande (un langage) de manipulation de chanes de caractres d'un fichier ou d'un flux en entre. Voir la page ddie : awk

  • badblocks badblocks permet de rechercher les blocks dfectueux sur un priphrique.

    badblocks -s -v /dev/hda

    Si badblocks trouve un bloc dfectueux dj utilis, e2fsck essaie de dplacer celui-ci un autre emplacement. Si le bloc est vraiment abm, le contenu du fichier peut tre corrompu.

    e2fsck -c ?

    Liens utiles :

    http://smartmontools.sourceforge.net/badblockhowto.html batch

    Permet de lancer une commande quand le systme n'est pas trop charg (charge CPU < 1.5).

    bg (background) Placer un job en arrire-plan (voir jobs)

    cal Permet d'afficher le calendrier en console ; par dfaut le mois courant

    cal -y affiche l'anne courante cal 2000 affiche l'anne 2000 cal 01 2001 affiche janvier 2001

    cat Permet d'afficher sur STDOUT un flux d'entre ou un fichier spcifi en paramtre.

    Exemple :

    cat fichier.txt

    crire des notes dans un fichier : pour simuler un notepad/bloc-note dans un shell (marche seulement pour crer un nouveau fichier) :

    cat > list -

    Utiliser ^C (ctrl+c) pour sortir.

  • cd change directory ; commande utiliser pour changer de rpertoire (quivalent de dir sous Windows). A tout moment on peut savoir dans quel rpertoire on est (chemin absolu) grce la commande pwd. Utilisation :

    cd /tmp : aller dans le rpertoire /tmp cd . : le . dsigne le rpertoire courant. Donc cette commande va dans le

    rpertoire courant (donc dans l'absolu, cette commande ne sert rien !)

    cd .. pour aller dans le rpertoire racine du rpertoire courant. On peut enchainer plusieurs fois cette squence (cf exemples).

    cd la commande seule permet de se rendre dans sa HOMEDIR c'est dire son rpertoire personnel (souvent dans /home/

  • cd -

    pwd

    /home/toto

    cd ..

    pwd

    /home

    cd

    pwd

    /home/toto

    cd ../..

    pwd

    /

    cd /home/toto

    (dans ce contexte, quivaut "cd home/toto" ou "cd ./home/toto")

    pwd

    /home/toto

    chattr/lsattr Permet de changer et lister les attributs de fichiers sur une partition ext2-3

    protger un fichier avec chattr +i /etc/services bit ajout-seul (pour les logs) : chattr +a /var/log/messages effacement total : chattr +s fichier

    chmod Change les permissions sur un fichier. Syntaxe simplifie : chmod [-R] DROITS FICHIERS

    Thorie des droits sous Linux Les droits d'un fichiers sont de la forme : [d]rwxrwxrwx qu'il faut lire en sparant les champs : [d] rwx rwx rwx. (d s'il s'agit d'un rpertoire ; puis 3 squences de 3 caractres qui reprsentent les droits (r (read), w (write), x (execute) ou - (pas le droit)) affects

  • respectivement au propritaire du fichier, au groupe du fichier et aux autres (others). On obtient les droits d'un fichier avec la commande ls -l :

    ls -l /home/toto/secret.txt

    -rwxr-xr-- 1 toto smbusers 1,2K sep 16 09:34 secret.sh

    Dans cet exemple :

    (-) c'est un fichier et non un rpertoire (rwx) le propritaire de ce fichier est toto ; il a les droits de lecture,

    criture et excution sur ce fichier

    (r-x) le fichier appartient au groupe smbusers ; les utilisateurs appartenant ce groupe auront les droits en lecture et excution sur ce

    fichier, mais pas en criture.

    (r) les autres utilisateurs n'ont que le droit de lire le fichier, mais pas de l'excuter ni de le modifier.

    Mthode numrique Ces permissions peuvent se coder avec des valeurs binaires : on considre chaque champ rwx indpendamment. Pour faire simple : r vaut 4, w vaut 2 et x vaut 1. L'explication technique est que chaque droit vaut la valeur de la puissance de 2 du bit qui lui correspond : Par exemple r-x 101 en binaire, ce qui donne en dcimal 2^2 (+ 0 * 2^1) + 2^0 = 4 (+ 0) + 1 = 5

    Les permissions du fichier secret.sh ci-dessus se codent donc ainsi (on ne tient pas compte du premier tiret qui dtermine s'il s'agit d'un dossier ou non) :

    rwx r-x r--

    7 5 4

    => 754

    Pour ajouter le droit d'criture au membres du groupe smbusers, il faut transformer les droits en : rwxrWxr, soit 774 :

    chmod 774 secret.sh

    ls -l secret.sh

    -rwxrwxr-- 1 toto smbusers 1,2K sep 16 09:34 secret.sh

    Mthode symbolique On peut simplifier la mthode numrique en se disant : je veux ajouter le droit en criture au groupe ce qui se traduit par cette notation alternative :

    chmod g+w secret.sh

  • g pour group, + pour ajouter, w pour write.

    La syntaxe est la suivante :

    +, - ou = pour ajouter, enlever ou appliquer la valeur exacte d'une permission.

    u, g, ou o pour les champs user, group ou other. r, w ou x pour les droit read, write ou execute.

    On peut factoriser les changements : par exemple pour ajouter le droit de lecture et criture d'un fichier tout le monde

    chmod ugo+rw un_fichier.txt

    On peut lister des modifications :

    chmod u+rw,g+x un_fichier.txt

    chsh Cette commande permet de changer le shell par dfaut de l'utilisateur courant.

    chsh

    Enter the new value, or press return for the default

    Login Shell [/bin/bash]:/bin/zsh

    Pour changer le shell par default des utilisateurs :

    vim /etc/adduser.conf

    DSHELL=/bin/bash -> DSHELL=/bin/zsh

    clear Permet d'effacer le contenu du terminal (raccourci clavier : ctrl+c.

    comm Permet de comparer les fichiers tris GAUCHE et DROITE ligne par ligne.

    comm fichier1 fichier2

    Sans option, la sortie se fait sur 3 colonnes. La premire colonne contient les lignes uniques au FICHIER1, la seconde contient les lignes uniques au FICHIER2, et la troisime contient les lignes communes aux deux fichiers. Options :

    -1 : supprimer les lignes uniques du fichier de gauche -2 : supprimer les lignes uniques du fichier de droite -3 : supprimer les lignes uniques des 2 fichiers

    cp

  • copy ; copier de fichier. Paramtres :

    -i affiche une demande de confirmation avant chaque crasement de fichier. -r recursive = on copie aussi toute la sous-arborescence avec les rpertoires. -p permission = permet de conserver les permissions -a archive = quivalent -rp

    cron cron est un utilitaire qui permet de planifier des taches un moment donn.

    cut Permet de slectionner une ou des colonne(s) dans un flux ou un fichier.

    Par exemple pour rcuprer la liste des utilisateurs d'un systme ainsi que le chemin de leur home, on slectionne la 1re et la 6me colonne (field) du fichier /etc/passwd en dlimitant avec : (delimiter) : cut -d":" -f1,6 /etc/passwd

    cut n'accepte qu'un seul caractre comme dlimiteur ; si on veut utiliser le caractre tabulation, \t ne fonctionne donc pas. Pour cela il faut utiliser la squence ctrl+v .

    date Utilitaire pour manipuler la date : renvoie la date courante, converti la date en diffrents formats.

    Pour convertir une date du format UNIX au format human readable :

    date -d "1970-01-01 UTC + 1164128484 seconds"

    Tue Nov 21 18:01:24 CET 2006

    Afficher la date au format YYYY/MM/JJ-HH:MM:SS :

    date +%Y/%m/%d-%H:%M:%S

    2009/06/25-15:07:56

    dd Copy and convert a file.

    Permet entre autre de gnrer un fichier d'une certaine taille, par exemple 50 Mo :

    dd if=/dev/zero of=500meg bs=1k count=500000

    Lgende :

    if : input file of : output file bs : block size (50 000 x 1024 = 50 mgas)

  • diff diff permet d'afficher les diffrence entre 2 fichiers :

    cd /tmp ; echo "toto" > toto ; echo "titi" > titi

    diff toto titi

    1c1

    < toto

    ---

    > titi

    Un patchfile c'est un fichier qui contient la sortie d'un diff :

    diff -u toto titi > toto_titi.patch

    Pour patcher toto avec les modifications de titi on utilise la commande patch avec le patchfile :

    patch -b toto toto_titi.patch

    patching file toto

    disown Permet de dsolidariser un processus du shell qui l'a lanc. Si aucun processus n'est spcifi, il prend le dernier lanc.

    dmesg Affiche les messages mis lors du boot (on y trouve aussi les messages lors du branchement d'un disque USB).

    df Permet d'afficher l'espace disque restant sur tous les disques monts ;

    -h permet d'utiliser un affichage comprhensible (il adapte l'unit en fonction de la taille (Ko, Mo, etc)).

    -T affiche le type de sytme de fichier (ntfs, fat, ext3, ) df -hT

    Sys. de fich. Type Tail. Occ. Disp. %Occ. Mont sur

    /dev/sda1 ext3 3,9G 1,5G 2,2G 41% /

    tmpfs tmpfs 474M 0 474M 0% /lib/init/rw

    udev tmpfs 10M 32K 10M 1% /dev

    tmpfs tmpfs 474M 4,0K 474M 1% /dev/shm

  • /dev/sda3 ext3 913G 840G 26G 98% /mnt/data

    dpkg Permet de grer les packages :

    dpkg -L liste les fichiers contenus dans le paquet dpkg-reconfigure reconfigurer le paquet dpkg -i installer un paquet dpkg -S donne le paquet auquel se rapporte le fichier dpkg-query -W affiche la listed e tous les paquets installs sur la machine

    du Permet d'afficher la taille des contenus d'un rpertoire ; l'option -h fait la mme chose qu'avec la commande df ; l'option -s (summurize) permet de n'afficher la taille que du dossier courant.

    du -sh

    437M .

    Pour limiter l'affichage des rpertoires du dossier courant :

    du -h --max-depth=1

    4,0K ./.aptitude

    239M ./income

    4,0K ./.w3m

    4,0K ./Mail

    16K ./test-gen-rsa

    16K ./.ssh

    60M ./cea

    776K ./save_tiga

    307M .

    echo echo permet d'afficher une ligne echo toto

    toto

    Options :

    -n : ne va pas la ligne aprs le texte

  • -e : interprte les caractres spciaux du genre \n ou \t echo -e to\tto\ntiti

    to to

    titi

    env Affiche les variables d'environnement et leur contenu.

    env

    HOST=hel

    TERM=xterm

    SHELL=/bin/bash

    SSH_TTY=/dev/pts/2

    USER=dude

    MAIL=/var/mail/dude

    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin

    BLOCKSIZE=1k

    PWD=/home/dude

    EDITOR=vim

    LANG=fr_FR.UTF-8

    PS1=\[\e[0;30;47m\]$(date +"%H:%M")\[\e[0;31m\] \h\[\e[0m\]:\[\e[0;32m\]\W \[\e[0m\]

    SHLVL=1

    HOME=/home/dude

    LOGNAME=dude

    _=/usr/bin/env

    OLDPWD=/home/dude/Mail##

    ethtool Permet d'obtenir/modifier des informations sur la connectivit niveau 1 et 2 de la carte rseau.

    Quelques exemples de commandes :

  • ethtool -i eth0

    driver: r8169

    version: 2.2LK

    firmware-version:

    bus-info: 0000:00:09.0

    ethtool eth0

    Settings for eth0:

    Supported ports: [ MII ]

    Supported link modes: 10baseT/Half 10baseT/Full

    100baseT/Half 100baseT/Full

    1000baseT/Half 1000baseT/Full

    Supports auto-negotiation: Yes

    Advertised link modes: 10baseT/Half 10baseT/Full

    100baseT/Half 100baseT/Full

    1000baseT/Half 1000baseT/Full

    Advertised auto-negotiation: Yes

    Speed: 100Mb/s

    Duplex: Full

    Port: Twisted Pair

    PHYAD: 1

    Transceiver: internal

    Auto-negotiation: off

    Supports Wake-on: g

    Wake-on: d

    Current message level: 0x000000ff (255)

    Link detected: yes

    Pour passer en 1 giga full dupleix et autongatiation :

    ethtool -s eth0 speed 1000 duplex full autoneg on

    exit

  • ou ctrl+d, permet de fermer un terminal graphique. expr

    valuer des expressions :

    tronquer la taille de la chaine $MSG 40 caractres expr "$MSG" : "\(.\{40\}\)"

    expressions arithmtiques expr $z + 1

    for Permet de faire une boucle pour ; voir programmation_shell.

    fg (forground) Placer un job en avant-plan. (voir jobs)

    file Affiche le type d'un fichier (ne tient pas compte de son extension mais regarde les headers dudit fichier)

    file toto

    toto: ASCII text

    find Permet de rechercher un fichier sur un disque

    find . -name toto.txt ici on recherche un fichier toto.txt dans le rpertoire courant (.) Liste des options possibles :

    -type d pour spcifier le type du fichier recherch (notamment directory, regular file, symbolic link)

    -name 'nom' permet de spcifier un nom de fichier ou un motif -perm 664 permet de chercher les fichiers qui ont exactement les droits du

    masque (ici 664 soit -rw-rw-r). On peut rechercher tous les fichier qui ont le droit d'criture pour le groupe par -perm -020.

    -regex 'expr_reg' permet d'utiliser une expression rgulire comme critre de recherche

    -exec permet d'excuter une commande pour chaque rsultat de la commande find (voir exemples)

    -size +1000M ne valide que les fichiers dont la taille est suprieure 1000 Mo. -not pour exclure une condition. Par exemple -not -path '/proc/*' permet

    d'exclure /proc de la recherche

  • -printf pour contrler la sortie et n'afficher que des champs spcifiques du fichier ; voir la partie exemples plus bas.

    Exemples fichiers en criture pour tout le monde

    find / perm 0002 ! type l

    fichiers en lecture pour tout le monde find / perm 0004 ! type l find / ( -perm -a+r -o -perm -a+w ) ! -type l

    fichiers modifis les dernires 48h find . -mtime -1 -print | more

    copier tous les fichiers .jpg dans /tmp find . -regex '.*\/([A-Z]|[0-9])+\.jpg$ -exec cp {} /tmp \;

    supprimer toutes ces maudites miniatures Windows : find . -name Thumbs.db -exec rm {} \;

    attribuer des permissions tous les sous-rpertoires contenus dans le rpertoire pics :

    find ./pics -type d -exec chmod g+rwx {} \;

    rechercher tous les fichiers excutables en excluant les dossiers find . -type f -perm -100

    trouver et compter les doublons dans le rpertoire courant (et les sous-rpertoires) :

    find . -type f | sed "s#.*/##g" | sort | uniq -c -d

    supprimer les dossiers vides find . -type d -empty -delete

    lister rcursivement les 10 fichiers les plus rcents d'un rpertoire : find /mnt/films -type f -printf "%TY-%Tm-%Td %TT %f\n" | sort | tail -10

    afficher les films de plus de 10 Go (-size +10G) contenus dans le dossier courant, tris par ordre dcroissant de taille :

    find . -type f -size +10G -printf "%k %f\n" | sort -rn | tail -10 On affiche la taille du fichier en Ko (%k), et le nom du fichier sans le path (%f). Le reste des commandes sert classer et ne retenir que les 10 plus rcents.

    flock flock est une commande de gestion de verrou. La syntaxe est :

    flock commande

  • Le concept global du verrou permet de vrifier que l'on n'a pas 2 commandes qui se lancent simultanment. La commande ne se lance que si aucun autre programme n'a bloqu le verrou ; si elle obtient le verrou, elle le bloque pour le temps de son excution, et le dbloque la fin. Par dfaut si le verrou ne peut tre acquis,flock attend qu'il se dbloque sans lancer la commande. Paramtres :

    -w 10 : annuler la commande si l'on n'acquire pas le verrou avec 10 secondes -s (shared) : crer un verrou partager (verrou de lecture) -e ou -x (exclusive) : pour obtenir un verrou exclusif (verrou d'criture)

    finger C'est un service qui permet d'obtenir des informations sur les comptes utilisateurs :

    finger -l dude

    free Affiche des informations sur la mmoire (utilise, libre, totale) :

    free

    total used free shared buffers cached

    Mem: 452052 382144 69908 0 145688 53744

    -/+ buffers/cache: 182712 269340

    Swap: 497972 424 497548

    ftp Permet d'changer des fichiers avec un hte distant par protocole FTP. Quelques commandes en vrac : dir cd get mget put mput binary exit.

    fuser Identifier les processus qui utilisent un fichier. (voir mount)

    grep grep est un outil de recherche de motifs, soit dans son flux d'entre soit dans un fichier (les 2 commandes suivantes sont quivalentes) :

    cat toto.txt | grep titi grep titi toto.txt Les options possibles sont :

    -c (count) pour avoir uniquement le nombre de lignes satisfaisantes -i (insensible la casse) : pour ne pas diffrencier minuscules et majuscules -n (number)pour afficher les numros de lignes -v pour obtenir les lignes o le motif n'existe pas -A pour afficher lignes aprs celles qui matchent -B pour afficher lignes avant celles qui matchent

  • -R mode rcursif (recherche dans tous les fichiers de tous les sous-rpertoires) color=auto pour afficher en rouge le motif dans les rsultats

    Il est possible d'utiliser les expressions rgulires dans le motif, par exemple :

    grep '^d' toto.txt Pour utiliser des filtres multiples il faut utiliser egrep : egrep "toto|titi" tata.txt

    *grep Les drivs de grep :

    egrep : permet d'utiliser des expressions rgulires tendues (ERE) dans les patterns ; il vaut mieux utiliser grep -E car egrep est dsuet. Exemple : pour afficher un fichier purg des lignes vides et des commentaires :

    grep -vE '^$|^#' file

    zgrep : permet de dzipper automatiquement les archives (*.gz) pour faire une recherche dedans

    Tips filtrer la liste des processus sans inclure le processus grep : ps aux | grep

    [p]rocess-name En temps normal si on recherche le processus ssh avec grep on obtient une ligne incluant le processus de recherche grep :

    ps axu | grep ssh dude 1777 0.0 0.0 3324 824 pts/4 S+ 12:29 0:00 grep ssh root 5332 0.0 0.1 5500 988 ? Ss Jan06 0:00 /usr/sbin/sshd En effet les [] ne sont interprts que par grep, et ne matchent plus la recherche. Pour supprimer cette ligne parasite :

    ps axu | grep [s]sh root 5332 0.0 0.1 5500 988 ? Ss Jan06 0:00 /usr/sbin/sshd

    source : commandlinefu gunzip

    Permet de dcompresser un fichier compress avec la commande gzip (.gz). gzcat est un alias souvent utilis pour lancer la commander cat toto.gz | gunzip

    gzip Est un outil de compression. il transforme un fichier en fichier archive ayant l'extension .gz, par exemple ici on compresse toto.tar :

    gzip -9 toto.tar

    ls

    toto.tar.gz

  • On obtient automatiquement un .tar.gz (le fichier .tar sera compress et renomm) ; l'option -9 indique le degr de compression. Pour dcompresser un fichier, voir gunzip.

    head Affiche les 10 premires lignes d'un fichier.

    head ~/.bash_history

    -n spcifie le nombre de lignes afficher help

    Affiche la liste des commandes internes et leur syntaxe. help affiche l'aide d'une particulire.

    history Permet d'afficher l'historique des commandes saisie dans un terminal :

    history

    64 ls -la

    65 pwd

    66 cd /

    67 cd etc

    68 echo 'toto'

    69 history

    On peut relancer une commande de l'historique en saisissant ! suivi de son numro :

    !65

    pwd

    /etc

    On peut galement relancer la dernire commande avec !! : !!

    pwd

    /etc

    Pour relancer la dernire commande commenant par p, on utilise :

    !p

    pwd

    /etc

    On efface l'historique avec history -c

  • host Renvoie l'IP d'un nom d'hte en paramtre :

    host toto

    toto has address 192.168.0.1

    Pour lister les IPs d'une liste de machines situe dans un fichier liste.txt :

    while read n; do host $n; done < liste.txt

    toto has address 192.168.0.1

    titi has address 192.168.0.2

    hostname Cette commande sans paramtre renvoie le nom de la machine ; suivi d'une chaine de caractre elle modifie le nom de la machine.

    toto:$ hostname

    toto

    toto:$ hostname titi

    titi:$

    Il faut diter /etc/hostname pour changer le nom de la machine pour le prochain reboot. Pour prendre en compte le changement :

    /etc/init.d/hostname.sh

    /etc/init.d/sysklogd restart

    puis se reloger.

    Avec le paramtre -i, la commande renvoie l'adresse IP de la machine : hostname -i

    ymir

    id Affiche l'uid (user id) ainsi que le gid (group id) et la liste des groupes auxquels appartiennet l'utilisateur courant. Si elle est suivi d'un nom d'utilisateur, la commande affiche ces information sur l'utilisateur en question.

    id root

    uid=0(root) gid=0(root) groupes=0(root)

  • ifup/ifdown ifup et ifdown sont des script dpendant de la distribution, qui servent activer/dsactiver une interface :

    ifup eth0

    quivaut (normalement) :

    ifconfig eth0 up

    Pour relancer le service rseau sous Debian :

    /etc/init.d/networking restart

    et sous Redhat :

    service network restart

    ifconfig Sert contrler le rseau sur la machine.

    configurer l'adresse IP static de la carte rseau ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255

    Pour activer le DHCP (adressage automatique) :

    dhclient eth0

    Pour le prendre en compte au prochain dmarrage, diter le fichier :

    /etc/network/interfaces sous Debian /etc/sysconfig/network et/ou /etc/sysconfig/network-

    script/ifcfg.eth0 sous Redhat /etc/sysconfig/network-script/ifcfg-eth0 sous NetBSD

    et mettre quelque chose qui ressemble a, c'est assez parlant :

    iface eth0 inet static

    address 192.168.0.2

    netmask 255.255.255.0

    network 192.168.0.0

    gateway 192.168.0.2

    post-up /usr/bin/ethtool eth0 -s speed 100 duplex full autoneg off

    (pour le DHCP il suffit de saisir iface eth0 inet dhcp la place)

  • Pour ajouter automatiquement des routes lorsque une interface rseau devient active ou inactive, on utilise la rgle post-up du fichier /etc/network/interfaces : allow-hotplug eth1

    iface eth1 inet dhcp

    post-up route add -net 42.42.42.0 netmask 255.255.255.0 gw 192.168.1.1

    down route del -net 42.42.42.0 netmask 255.255.255.0 gw 192.168.1.1

    (source : http://www.noplay.net/Ajouter-des-routes-au-chargement-d.html) pour supprimer l'adresse IP d'une interface :

    ip address del w.x.y.z dev ethX

    Cela fait la modif chaud, sans redmarrer l'interface.

    pour restaurer la configuration par dfaut d'une interface : ifconfig ethX default

    info Affiche les informations sur une commande (relativement similaire la commande man) : info ls

    ip Couteau suisse rseau, il permet de configurer les paramtres ip d'une interface rseau.

    ip addr show

    1: lo: mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

    inet6 ::1/128 scope host

    valid_lft forever preferred_lft forever

    2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0b:cd:0a:ad:31 brd ff:ff:ff:ff:ff:ff

    inet 132.166.99.1/24 brd 132.166.99.255 scope global eth0

    3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0b:cd:0a:ad:30 brd ff:ff:ff:ff:ff:ff

    iptables Principe

  • Les options

    Option : Description :

    -A Append (ajoute)

    -D Delete (efface)

    -I Insert (insre)

    -R Replace (remplace)

    -L List (liste)

    -F Efface toutes les rgles dans la ou les chanes

    -Z Remet les compteurs zro dans une ou plusieurs chanes

    -C Teste ce paquet sur une chane

    -N Cre une chane dfinie par l'utilisateur

    -X Efface une chane dfinie par l'utilisateur

    -P Change le comportement d'une chane sur une cible

    -E Change le nom d'une chane

    -p Protocole

    -s Adresse/masque de source

    -d Adresse/masque de destination

    -i Nom d'entre (nom ethernet)

    -o Nom de sortie (nom ethernet)

    -j Saute (cible de rgle)

    -m Correspondance tendue (peut utiliser des extensions)

    -n Sortie numrique de ports et d'adresses

    -t Table manipuler

    -v Mode bavard

    -x Vrifications tendues (affiche les valeurs exactes)

    -f Prends uniquement en compte le second fragment ou ceux d'aprs

    -V Version du paquet

    --line-numbers Affiche les numros de ligne

    Les extensions

  • Module Description Options tendues

    mac Vrifie que l'extension correspond pour les paquets entrants sur une adresse mac. --mac-source

    state Active l'inspection des tats --state (les tats sont ESTABLISHED,RELATED, INVALID, NEW)

    limit Dfinit une limite sur le flux --limit, --limit-burst

    owner Essaie de trouver des correspondances dans le crateur du paquet --uid-owner userid --gid-owner groupid --pid-owner processid --sid-owner sessionid

    unclean Plusieurs tests de vrification alatoires du bon tat des paquets

    Redirection Exemple de redirection du trafic HTTP vers un serveur mandataire (port 3128) :

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to proxyhost:3128

    iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to proxyhost:3128

    Exemples Ajoute en premire position de la table INPUT :

    iptables -I INPUT 1 -p tcp --dport 1165 -j ACCEPT

    On accepte les paquets TCP destination du port 1165

    Lister les rgles en place [dans la table INPUT uniquement] :

    iptables -L [INPUT] -n

    On peut utiliser l'option -v pour un mode plus verbeux (affiche les connexions actives).

    Liens http://www.linutop.com/wiki/index.php/Tutorials/Debootstrap

    jobs Affiche la liste des jobs du terminal (voir aussi bg et fg).

    Exemple : je lance 2 sleep (sans jeu de mot) que j'interrompe avec un ctrl+z, et je liste les jobs du terminal :

    sleep 10

    [1]+ Stopped sleep 10

    sleep 12

  • [2]+ Stopped sleep 12

    Les 2 commandes sont interrompues ; si je veux continuer le sleep 12 en le plaant en avant-plan grce son numro de job :

    jobs

    [1]- Stopped sleep 10

    [2]+ Stopped sleep 12

    fg %2

    sleep 12

    Il ne reste plus que le sleep 10 dans la liste des jobs ; je peux le relancer en arrire-plan sans prciser son numro de job car c'est le seul dans la liste :

    jobs

    [1]+ Stopped sleep 10

    bg

    [1]+ sleep 10 &

    kill Permet d'envoyer un signal un processus, dfini par son PID :

    kill -signal

    signal peut tre sous forme numrique ou alphabtique ; la liste des signaux peut tre affiche avec l'option -l : kill -l

    1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

    5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE

    9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS

    13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG

    17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD

    21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU

    25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH

    29) SIGINFO 30) SIGUSR1 31) SIGUSR2 32) SIGPWR

    ainsi kill -9 1000 et kill -SIGKILL 1000 auront le mme impact. NB : sur certains OS, les signaux ne sont pas dfinis par SIGxx mais xx tout court (SIGKILL KILL)

    killall

  • Envoyer un signal aux processus dont le nom contient . Il faut faire attention l'impact d'une telle commande si mal crite.

    killall rsh

    Les options sont les mmes que la commande kill. Sur les *BSD, pkill remplace killall.

    last Affiche les dernires connexions (ici les 12 dernires)

    last -n 12

    lastb Comme last, mais n'affiche que les mauvais logins.

    lastlog Affiche la liste des utilisateurs du systme suivis de la date et l'heure de leur dernire connexion.

    lastlog

    Utilisateur Port Venant de Dernire

    dude pts/1 is110853.intra.c ven dc 14 15:55:51 +0100 2007

    ftp **Jamais connect**

    people tty6 mar dc 19 17:40:45 +0100 2006

    roro pts/4 calata mer sep 12 20:55:57 +0200 2007

    let ex : Pour incrmenter z :

    let z=z+1

    let "z += 1"

    ln Commande pour crer des liens.

    Pour crer un lien dur :

    ln

    Pour crer un lien symbolique (~raccourci) :

    ln -s

    locate

  • Locate est une commande Unix permettant d'indexer et de retrouver facilement des fichiers sur un disque. Alors que la commande find recherche en parcourant le disque, locate utilise une base de donnes permettant une recherche beaucoup plus rapide ; l'inconvniant (mineur) tant qu'il faille rgulirement mettre jour cette base. La syntaxe est la suivante :

    locate fichier

    Pour affiner la recherche, on peut utiliser des paramtres :

    -d chemin pour spcifier une location -i pour ignorer la casse -r regex pour utiliser une expression rgulire regex -S affiche des statistiques

    Pour mettre jour la base (sous Debian) :

    updatedb

    logout Est la commande pour fermer sa session, dans un terminal login. Le raccourci est ctrl+d.

    look Pour rechercher un mot rapidement dans le dictionnaire (cf aspell), on utilise la commande look.

    look jap

    japonais

    japonaise

    japonaises

    jappement

    jappements

    japper

    ls Affiche le contenu d'un dossier ou les infos d'un fichier.

    La commande regorge d'options utiles et combinables :

    -l (long format) : affiche des informations dtailles des fichiers contenus dans le dossier en paramtre.

    color : affiche le rsultat en couleur -a : affiche les fichiers cachs -p affiche un / aprs les noms de rpertoires afin de mieux les identifier

  • -t (time) classe les rsultats par date de dernire modification -r (reverse) inverse le classement des rsultats

    ls -lp

    total 1728

    -rw-r--r-- 1 dude dude 4930 2006-11-08 11:34 buf_stag.txt

    drwxr-xr-x 2 dude dude 4096 2006-02-17 18:58 Desktop/

    drwxr-xr-x 3 dude dude 4096 2006-10-21 21:08 dl/

    drwx------ 2 dude dude 4096 2006-10-19 14:53 Mail/

    -rw------- 1 dude dude 91952 2006-11-07 14:38 mbox

    drwxr-xr-x 2 dude dude 4096 2006-09-25 11:43 public_html/

    -rw------- 1 dude dude 354 2006-10-20 10:27 sent

    -rw-r--r-- 1 dude dude 140 2006-09-12 02:00 uptime_tiga.txt

    drwxr-xr-x 20 dude dude 4096 2006-02-22 02:52 vlc-0.8.4a/##

    Il est conseill de faire des alias pour ne pas avoir saisir les options les plus utilises. Par exemple si on utilise bash, on dite le fichier de prfrence ~/.bashrc et on ajoute : alias ll='ls -l --color'

    alias la='ls -a --color'

    alias l='ls -p --color'

    (ces alias sont souvent dj prsents dans la pluspart des distributions Linux).

    Puis on relance le terminal.

    lshw Pour lister le hardware de la machine.

    lsmod Affiche le statut des modules du noyau Linux.

    lsof List open files ; permet de lister tous les fichiers ouverts sur le systme avec diffrentes informations dessus (ouverts par quel processus, quel utilisateur, etc).

    lsof -i indique les processus de type internet lsof -ni tcp:25 liste les processus de type internet utilisant du TCP sur le

    port 25

    lsof /dev/hda1 liste les fichiers ouvert sur /dev/hda1 lspci

    Permet de lister les matriels connect sur l'ordinateur :

  • lspci

    0000:00:00.0 Host bridge: nVidia Corporation nForce2 AGP (different version?) (rev a2)

    0000:00:00.1 RAM memory: nVidia Corporation nForce2 Memory Controller 1 (rev a2)

    0000:00:00.2 RAM memory: nVidia Corporation nForce2 Memory Controller 4 (rev a2)

    0000:00:00.3 RAM memory: nVidia Corporation nForce2 Memory Controller 3 (rev a2)

    0000:00:00.4 RAM memory: nVidia Corporation nForce2 Memory Controller 2 (rev a2)

    0000:00:00.5 RAM memory: nVidia Corporation nForce2 Memory Controller 5 (rev a2)

    0000:00:01.0 ISA bridge: nVidia Corporation nForce2 ISA Bridge (rev a3)

    0000:00:01.1 SMBus: nVidia Corporation nForce2 SMBus (MCP) (rev a2)

    0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a3)

    0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a3)

    0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a3)

    0000:00:04.0 Ethernet controller: nVidia Corporation nForce2 Ethernet Controller (rev a1)

    0000:00:06.0 Multimedia audio controller: nVidia Corporation nForce2 AC97 Audio Controler (MCP) (rev a1)

    0000:00:08.0 PCI bridge: nVidia Corporation nForce2 External PCI Bridge (rev a3)

    0000:00:09.0 IDE interface: nVidia Corporation nForce2 IDE (rev a2)

    0000:00:1e.0 PCI bridge: nVidia Corporation nForce2 AGP (rev a2)

    0000:01:07.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 6c)

    0000:02:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX - nForce GPU] (rev a3)

    Pour avoir plus d'infos sur un matriel (certaines options ne sont visibles que par le root) :

    lspci -v -s 02:00.0

  • 0000:02:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX - nForce GPU] (rev a3) (prog-if 00 [VGA])

    Subsystem: Micro-Star International Co., Ltd.: Unknown device 5710

    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 12

    Memory at e0000000 (32-bit, non-prefetchable) [size=16M]

    Memory at d8000000 (32-bit, prefetchable) [size=64M]

    Memory at dc000000 (32-bit, prefetchable) [size=512K]

    Expansion ROM at dc080000 [disabled] [size=128K]

    Capabilities: [60] Power Management version 2

    Capabilities: [44] AGP version 2.0

    (voir aussi setpci) mail

    Pour envoyer des mails en mode texte.

    Exemple:

    mail -s "Objet du mail" [email protected]

    >test de mail

    >sur plusieurs lignes

    >END

    Ou non interactif (en utilisant un fichier source) :

    mail -s "Test de mail" [email protected] < mail.txt -- -f [email protected] -F 'Monsieur tutu'

    Ici on utilise les options :

    -f (from) pour donner spcifier l'adresse de l'expditeur du mail. -F pour spcifier le nom de la personne qui envoie le mail.

    man Commande permettant d'accder l'aide des commandes. Par exemple man ls permet d'afficher la page de manuel concernant la commande ls. On utilise les flches haut/bas pour changer de ligne, page up/page down (ou espace) pour changer de page, et q pour quitter. Les paramtres :

  • -k permet d'afficher toutes les pages de l'aide qui contiennent dans leur nom ou leur description.

    -K affiche les pages qui contienne ex :

    man -k fat

    apropos fat

    fs (5) - Linux filesystem types: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs

    mbadblocks (1) - tests a floppy disk, and marks the bad blocks in the FAT

    mshowfat (1) - shows FAT clusters allocated to file

    Les chiffres entre paranthses indiquent les sections du manuel qui nous concernent. Pour consulter une section, par exemple la 5 de fs :

    man 5 fs

    mii-tool Utilitaire qui ressemble ethtool

    mii-tool

    eth0: negotiated 100baseTx-FD flow-control, link ok

    eth1: negotiated 100baseTx-FD flow-control, link ok

    modconf Outil permettant de configurer les modules matriels (drivers) utiliss par le noyau de votre systme.

    mount Contenu de la fstab :

    cat /etc/fstab

    /dev/hda8 / ext3 defaults,errors=remount-ro 0 1

    /dev/hda6 /sav ext3 defaults,user 0 2

    /dev/hda7 none swap sw 0 0

    /dev/hdc /mnt/cdrom iso9660 ro,user,noauto 0 0

    /dev/hda5 /mnt/e vfat defaults,user,uid=1000 0 0

    /dev/hdb2 /mnt/i80 ext3 defaults,user 0 2

  • //dude/g /mnt/dude_g smbfs username=,password=,gid=ftpusers,dmask=755 0 0

    Il faut noter que le dmask (directory mask) et le fmask (file mask) remplace le unmask traditionnel (utilis pour grer les droits des fichiers samba). umask=022 correspond unmask=755 Quelques quivalants en ligne de commande :

    mount -t vfat /dev/hda5 /mnt/e mount -t smbfs -o username=rezo,password=rez0 //dude/g /mnt/dude_g

    Pour dmonter une partition :

    umount /mnt/e ou umount /dev/hda5 En cas de problme au dmontage (umount: /mnt/cdrom: device is busy par exemple) voici quelques pistes :

    lsof | grep /mnt/cdrom pour lister les applications bloquant la ressource fuser /mnt/cdrom fait la mme chose (l'option -k permet de killer directement

    le(s) processus)

    umount -f /mnt/cdrom ou umount -l /mnt/cdrom pour, respectivement, forcer le dmontage ou faire un dmontage paresseux.

    Pour monter une sous-arborescence d'une partition dj monte (c'est utile par exemple pour muler des liens symboliques, invisibles par ftp) :

    mount bind /mnt/dude_g/dl/mp3 /sav/mp3 (le dossier /sav/mp3 doit exister) Pour automatiser le montage d'une sous arborescence au dmarrage, on va crire un script :

    vi /etc/init.d/mount_mp3

    #!/bin/bash

    echo Montage de www sur /home/votreutilisateur/www

    mount --bind /var/www /home/votreutilisateur/www

    et le lancer au dmarrage :

    chmod +x mount_mp3

    update-rc.d mount_mp3 defaults

    Pb : Si la machine qui partage des fichiers reboote, le point de montage devient invalide. Il faudrait le dtecter automatiquement, dmonter puis remonter le partage.

    netcat Permet de crer des sockets comme client (netcat mon_serveur.fr 200) ou comme serveur (netcat -l -p 80) :

    netcat -t ns213.186.xx.xx 23 Se comporte comme un client telnet

  • netcat -l -p 23 > espionne.log Ecoute sur le port 23 (telnet) et enregistre dans espionne.log tout ce qui est tap par le client.

    netcat -l -p 23 < mes_commandes Excute les commandes qui sont dans mes_commandes.

    netcat -l -p 23 -e ma_commande Excute la commande aprs connexion. netcat -vv la_machine_a_scanner 1-100 Permet de lancer un scan sur des

    machines distantes.

    netcat -vv -z -i 10000 -r 127.0.0.1 1-200 Permet de scanner alatoirement les ports de 1 100 avec un time out. On vite la dtection.

    Crer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket :

    ct serveur :

    mkfifo /tmp/backpipe nc -l 3333 < /tmp/backpipe | cat 1> /tmp/backpipe ct client (ici le client tape la commande, puis cho dans son prompt) :

    nc 127.0.0.1 3333 cho cho et, pour afficher un compteur d'octets transitant par notre socket (ct serveur dans cet exemple), on peut utiliser l'utilitaire Pipe viewer (il faut l'installer via aptitude) : aptitude install pv [..] mkfifo /tmp/backpipe nc -l 3333 < /tmp/backpipe | pv -b | cat 1> /tmp/backpipe

    autre exemple d'utilisation de netcat : muler un serveur web ct client :

    echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80 ct serveur

    { echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c

  • netstat -natp affiche toutes les connexions (-a) tcp (-t) en numrique (-n) en indiquant le processus qui utilise chaque socket (-p)

    netstat -ntl liste les ports ouverts (listen) nslookup

    Permet d'interroger un serveur DNS afin d'obtenir des informations sur un domaine ou sur une machine :

    nslookup google.fr

    Server: 127.0.0.1

    Address: 127.0.0.1#53

    Non-authoritative answer:

    Name: google.fr

    Address: 216.239.59.104

    Name: google.fr

    Address: 66.249.93.104

    Name: google.fr

    Address: 72.14.221.104

    Cet outil est dsuet ; dig le remplace et est plus complet. passwd

    (ou yppasswd) permet de changer le mot de passe du login courant. Il faut connaitre l'ancien mot de passe pour en dfinir un nouveau. Le root peut changer le mot de passe de n'importe quel utilisateur :

    passwd user

    paste Coller squentiellement les lignes correspondantes de chaque fichier fourni en paramtre, spar par des tabulations, vers la sortie standard.

    paste toto titi

    ping Permet d'envoyer une requte ICMP echo-request vers la machine spcifie en argument, afin de vrifier la connectivit. Le ping permet galement de connatre le RTT (dlais aller-retour du paquet). Sous Linux la commande se rpte l'infini (par dfaut), il faut sortir avec un ^C (ctrl+c). ping google.com

    PING google.com (74.125.127.100) 56(84) bytes of data.

  • 64 bytes from pz-in-f100.google.com (74.125.127.100): icmp_seq=1 ttl=44 time=177 ms

    64 bytes from pz-in-f100.google.com (74.125.127.100): icmp_seq=2 ttl=44 time=176 ms

    64 bytes from pz-in-f100.google.com (74.125.127.100): icmp_seq=3 ttl=44 time=174 ms

    ^C

    --- google.com ping statistics ---

    3 packets transmitted, 3 received, 0% packet loss, time 2010ms

    rtt min/avg/max/mdev = 174.353/176.162/177.575/1.429 ms

    Options avances ping -c 5 (count) : permet de limiter le nombre de ping envoy(s) (ici 5) ping -i 2 (interval) : pour spcifier l'intervalle de temps (en seconde)

    entre 2 pings successifs. Par dfaut c'est 1 seconde ; seul le root peut

    descendre en dessous de 200ms (0.2), pour viter le flood.

    ping -I eth1 (Interface) : permet de spcifier l'interface de sortie du ping (ici l'interface eth1, mais on peut aussi prciser une adresse IP source de la

    machine, la table de routage fera le reste)

    ping -n (numeric) = pas de rsolution de nom dans les rsultats de la commande (plus rapide)

    ping -q (quiet) : seul la ligne de rsum est affiche, pas les pings successifs

    ping -s 1472 (packetsize) : permet de spcifier la taille du payload (en octet) du paquet (auquel il faut ajouter 8 octets d'entte ICMP, 20 d'entte

    IP et 18 d'entte Ethernet. 1472 + 8 + 20 + 18 = 1518, la taille maximum

    d'un segment TCP). Cela sert souvent tester la fragmentation des paquets.

    ping -t 1 (ttl) permet de spcifier le TTL (Time To Live) des paquets envoys. Un TTL=1 comme ici permet de s'arrter au premier hop

    (=routeur) (on rester dans le rseau commut)

    ping -v (verbose) ping verbeux ping -w 2 -c 3 (deadline)) dtermine le temps au bout duquel la

    commande ping rend la main, indiffremment du nombre de pings envoys.

    dans cet exemple la commande va rendre la main au bout de 2 secondes,

    sans avoir envoyer les 3 pings demands.

    ping -W (timeout) : permet de spcifier, en seconde, le temps d'attente maximum d'une rponse un ping (si la machine d'en face met trop de

    temps rpondre). Par dfaut, il vaut 2 RTTs.

  • pmap Affiche la consommation mmoire et les fichiers ouverts par le processus de PID 30213 :

    pmap -d 30213

    30213: bash

    Address Kbytes Mode Offset Device Mapping

    08048000 664 r-x-- 0000000000000000 009:00000 bash

    080ee000 20 rw--- 00000000000a6000 009:00000 bash

    080f3000 20 rw--- 00000000080f3000 000:00000 [ anon ]

    08177000 1096 rw--- 0000000008177000 000:00000 [ anon ]

    b7c4d000 28 r--s- 0000000000000000 009:00000 gconv-modules.cache

    b7c54000 40 r-x-- 0000000000000000 009:00000 libnss_files-2.7.so

    b7c5e000 8 rw--- 0000000000009000 009:00000 libnss_files-2.7.so

    b7c60000 36 r-x-- 0000000000000000 009:00000 libnss_nis-2.7.so

    b7c69000 8 rw--- 0000000000008000 009:00000 libnss_nis-2.7.so

    b7c6b000 84 r-x-- 0000000000000000 009:00000 libnsl-2.7.so

    b7c80000 8 rw--- 0000000000014000 009:00000 libnsl-2.7.so

    b7c82000 8 rw--- 00000000b7c82000 000:00000 [ anon ]

    b7c84000 28 r-x-- 0000000000000000 009:00000 libnss_compat-2.7.so

    b7c8b000 8 rw--- 0000000000006000 009:00000 libnss_compat-2.7.so

    b7c8d000 1256 r---- 0000000000000000 009:00000 locale-archive

    b7dc7000 4 rw--- 00000000b7dc7000 000:00000 [ anon ]

    b7dc8000 1364 r-x-- 0000000000000000 009:00000 libc-2.7.so

    b7f1d000 4 r---- 0000000000155000 009:00000 libc-2.7.so

    b7f1e000 8 rw--- 0000000000156000 009:00000 libc-2.7.so

    b7f20000 16 rw--- 00000000b7f20000 000:00000 [ anon ]

    b7f24000 8 r-x-- 0000000000000000 009:00000 libdl-2.7.so

    b7f26000 8 rw--- 0000000000001000 009:00000 libdl-2.7.so

    b7f28000 188 r-x-- 0000000000000000 009:00000 libncurses.so.5.7

    b7f57000 12 rw--- 000000000002f000 009:00000 libncurses.so.5.7

    b7f5e000 8 rw--- 00000000b7f5e000 000:00000 [ anon ]

  • b7f60000 4 r-x-- 00000000b7f60000 000:00000 [ anon ]

    b7f61000 104 r-x-- 0000000000000000 009:00000 ld-2.7.so

    b7f7b000 8 rw--- 000000000001a000 009:00000 ld-2.7.so

    bf968000 84 rw--- 00000000bffeb000 000:00000 [ stack ]

    mapped: 5132K writeable/private: 1324K shared: 28K

    ps Affiche la liste des processus :

    ps aux : afficher tous les processus ps -ef : peu prs pareil ps U afficher tous les processus lancs par

    Les options annexes :

    -w permet un affichage long (wide) afin que l'affichage des noms des processus ne soient pas coups

    -C pour n'afficher que les lignes qui match ledit processus -l affichage en long format

    Pour afficher des champs personnaliss, on utilise le paramtre o puis on choisi les colonnes afficher ; exemple :

    ps axo pid,comm,%cpu,%mem,state,tty,euser,ruser,nice

    reset Permet de rinitialiser le terminal, notamment quand on affiche un binaire qui provoque des affichages bizarres.

    rev Permet d'inverser l'ordre des caractres des lignes d'un fichier ou d'un flux.

    echo 'tito' | rev

    otit

    route Permet de contrler la table de routage de la machine.

    Pour voir la table de routage actuelle : route -n qui quivaut netstat -rn, commande plus universelle.

    Ajouter l'adresse de la passerelle (gw ou gateway cela dpend) route add default gw 192.168.0.1 netmask 255.255.255.0

  • Ajouter un host : route add -host 195.98.246.28 gateway 192.168.0.1

    Ajouter un rseau : route add -net 195.98.246.0 netmask 255.255.0.0 gateway 192.168.0.1

    Pour supprimer une route : route del default

    route del -net 192.56.76.0 netmask 255.255.255.0 dev eth0

    Pour ajouter un DNS, il faut agir sur le fichier /etc/resolv.conf : echo "nameserver 193.252.19.3" >> /etc/resolv.conf

    runlevel Commande qui affiche le runlevel courant et prcdent. S'il n'y a pas de prcdent, affiche N.

    runlevel

    N 3

    peu prs similaire la commande who -r. sed

    Stream EDitor est une commande qui permet d'appliquer diffrentes transformations prdfinies un flux squentiel de donnes textuelles.

    Filtre pour remplacer une IP par X.X.X.X sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g"

    Convertir les minuscules en majuscules echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | sed 's/.*/\U&/' la phrase avec des lettres n'importe comment

    Ajouter une ligne en dbut de fichier : sed -i '1iPremireLigne' toto.txt (il s'agit d'un un i suivi du texte insrer)

    Afficher la 3me ligne d'un fichier : sed -n '3p'

    Afficher les lignes de 2 5 d'un fichier ; alternative : afficher les lignes de 2 jusqu' ce qu'une expression rgulire matche (dans cet exemple : /sys/)

    sed -n '2,5p' sed -n '2,/sys/p'

    On peut rutiliser des patterns entre () qui ont matches avec \1, \2. Par exemple, pour inverser les 3 termes spars par des virgules :

  • echo "tata,toto,tutu" | sed 's/\(.*\),\(.*\),\(.*\)/\3,\2,\1/' tutu,toto,tata \1 reprsente la premire pattern entre paranthses, \2 la seconde et \3 la troisime.

    Substitution multi-lignes : avec les buffers de sed on peut faire des substitutions de chaines mme si elles sont rparties sur plusieurs lignes ; par

    exemple on veut remplacer la chaine je pense par nous pensons, mme si

    le je et le pense sont spars par plus d'un espace ou par un saut de ligne.

    cat fichier.txt je pense qu'il bluff je pense je pense sed -e ' N s/je\([ \n]\{1,\}\)pense/nous\1pensons/g P D' fichier.txt nous pensons qu'il bluff nous pensons nous pensons

    Utiliser les variables du shell : sed peut utiliser le contenu de variables du shell dans ses comparaisons ; pour cela on doit les entourer de double quote et les

    sortie du simple quote de l'expression rgulire du sed. Voyez plutt : je veux

    remplacer le texte titi par le contenu de ma variable VAR dclar

    VAR=test echo -e "toto\ntiti" | sed s/titi/"$VAR"/ toto test Dans certains cas on est oblig de conserver les quotes qui entourent l'expression sed ; dans ce cas on procdera de la sorte :

    echo -e "toto\ntiti" | sed 's/titi/'"$VAR"'/' Liens utiles

    Sed - Introduction SED - Part II seq

    Affiche une squence de nombres ; syntaxe = seq [OPTION] FIRST INCREMENT LAST Options :

    -f, format=FORMAT use printf style floating-point FORMAT -s, separator=STRING, separator=STRING ; use STRING to separate

    numbers (default: \n)

    -w, equal-width equalize width by padding with leading zeroes seq 3

  • 1

    2

    3

    seq -s" " -2 0.5 -1

    -2,0 -1,5 -1,0

    set set -o vi permet de pouvoir utiliser les commandes vi dans le shell.

    shuf shuf (et non pas snuff) permet d'afficher une permutation alatoire des lignes de son flux d'entre (pas ncessairement des nombres). Paramtres :

    -n X : permet de n'afficher que les X premires lignes du tirage -i X-Y : permet de spcifier un intervalle de nombres qui seront permuts (X

    la borne infrieure et Y la borne suprieure)

    -e : permet de traiter chaque paramtre comme un flux d'entre Exemple :

    faire un tirage de 1-2-3 (les 2 lignes sont quivalentes) : echo -e "1\n2\n3" | shuf

    shuf -e 1 2 3

    shuf -i 1-3

    simuler un tirage de l'euro-million : echo $(shuf -i 1-49 -n 5) - $(shuf -i 1-10 -n 1)

    shutdown Permet d'teindre le systme un instant donn, condition d'tre root.

    # shutdown -r now permet de redmarrer (reboot) le systme (alias : reboot) # shutdown -h now permet d'arreter (halt) le sytme (alias : halt)

    Pour commander un reboot ou un arrt dans 12 minutes :

    shutdown -h +12

    ou heure fixe :

    shutdown -h 01:00

    Pour annuler (cancel) la planification d'une commande :

  • shutdown -c

    Pour redmarrer et forcer un fsck lors du dmarrage :

    shutdown -r -F now

    sort sort permet de classer par ordre alphabtique les lignes d'un fichier texte. Si aucun fichier n'est spcifi, sort lit l'entre standard.

    sort fichier.txt abc def ghi Ceci pose un problme lorsqu'on veut classer des nombres :

    echo -e "11\n3" | sort 11 3 On aurait voulu qu'il les classe dans l'ordre croissant et non alphabtique. Pour trier les nombres, on utilise le paramtre -n qui prcise qu'on veut un tri numrique : echo -e "11\n3" | sort -n 3 11 Paramtres utiles :

    -n (numeric) : pour trier des nombre dans l'ordre croissant -r (reverse) : pour inverser le tri -u (uniq) : pour supprimer les doublons -i (ignore nonprinting) : ne tient pas compte des espaces, tabulations, -f (ignore case) : ne tient pas compte de la casse (majuscules/minuscules) -k n trier selon la n-ime colonne. On peut faire suivre par d'autre paramtres

    (ex : -k2r pour trier selon la 2nde colonne en mode renverse) -t prcise le sparateur de colonne (par dfaut un espace blanc)

    Exemple :

    Trier des adresses IP (le -n ne suffit pas car il ne tient compte que du premier nombre de chaque ligne) :

    sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 adresses.txt

    trier selon la 2nde colonne echo -e "toto aa\ntota bb\ntiti cc\n" | sort -k2 toto aa tota bb titi cc

    split

  • split permet de sparer un fichier en plusieurs plus petits (par exemple ici en fichiers de 10 Mo):

    split -b 10m toto

    Les fichiers ainsi crs seront nomms xaa, xab, xac et ainsi de suite autant que ncessaire.

    Pour les rassembler il suffit d'utiliser cat :

    cat xaa xab xac xad xae > 50meg

    strings Affiche les chaines de caractres imprimable dans le fichier spcifi (c'est donc peu utile sur les fichiers texte).

    strings toto.exe

    su Permet de lancer un shell sous un autre nom d'utilisateur. Par dfaut (si on ne fourni pas de paramtre) il s'agit de root.

    su toto

    pour devenir toto (cela prompt le mot de passe root)

    su

    pour devenir root.

    su -

    pour devenir root avec avec la squence de login complete (hritage des chemins vers les commandes, l'environement de l'utilisateur)

    su -c 'find / -name *.c'

    permet d'executer la une seule fois en root (su -c 'command'

  • su

    vim /mnt/dude_e/save/defs.txt

    su

    vim buf_stag.txt

    pwd

    cd

    /usr/pkg/bin/lpr -P Black sncf-confirmation

    man cvs

    w

    man calc

    -n affiche les dernires lignes -f la commande tail ne se termine jamais et affiche l'cran toute ligne

    ajoute au fichier en paramtre (par exemple tail -f /var/log/messages) tar

    Un outil d'archivage de donnes qui permet de crer une archive partir de fichiers/arborescence. par exemple on veut archiver le rpertoire ./toto/ et tout son contenu (rpertoires et fichiers normaux).

    tar cvf toto.tar ./toto

    (toto.tar dsigne le nom de l'archive qu'on veut crer, il doit avoir l'extension .tar) On peut archiver ET compresser le fichier grce gunzip (option z) : tar czvf toto.tar.gz ./toto

    Plus tard, pour le dsarchiver :

    tar zxf toto.tar

    telnet Permet de se connecter un serveur distant avec le protocole telnet.

    telnet google.fr [80]

    Le port (ici 80) est facultatif (par dfaut 23).

    time Permet de calculer le temps d'excution d'une commande :

    time sleep 3

  • real 0m3.015s

    user 0m0.000s

    sys 0m0.000s

    La commande retourne le temps rel (real), le temps en mode utilisateur (user) et le temps en mode systme (sys).

    top Affiche la liste des processus et permet d'observer en temps rel l'activit de la mmoire et du processeur.

    tr Translate or delete characters.

    exemple : convertir toutes les majuscules d'une chaine en minuscules :

    echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | tr '[:upper:]' '[:lower:]'

    la phrase avec des lettres n'importe comment

    a quivaut :

    echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | tr A-Z a-z

    traceroute Traceroute permet de dterminer la route prise par un paquet pour atteindre une IP cible. L'outil envoie un paquet IP avec un TTL de 1. Du coup, le paquet n'ira pas plus loin que le premier routeur qui enverra un paquet ICMP TTL Exceeded avec son adresse IP. En incrmentant le TTL jusqu' atteindre la destination on obtient les IPs de tous les routeurs intermdiaires. Certains routeurs ne communiquent pas d'informations et affichent ??? ou * * *.

    traceroute google.fr

    traceroute: Warning: google.fr has multiple addresses; using 66.102.9.104

    traceroute to google.fr (66.102.9.104), 30 hops max, 40 byte packets

    1 smc (192.168.0.254) 0.346 ms 0.315 ms 0.305 ms

    2 82.234.75.224 (82.234.74.254) 28.637 ms 28.650 ms 28.549 ms

    3 * * *

    4 * * *

    5 th1-6k-2-po20.intf.routers.proxad.net (212.27.50.158) 29.221 ms * *

  • 6 ldc-6k-1-v806.intf.routers.proxad.net (212.27.57.178) 29.470 ms 28.995 ms *

    7 google.freeix.net (213.228.3.136) 31.056 ms 29.233 ms 29.521 ms

    8 216.239.43.39 (216.239.43.39) 46.563 ms 46.859 ms 46.318 ms

    9 64.233.174.113 (64.233.174.113) 46.504 ms 72.14.232.233 (72.14.232.233) 46.352 ms 46.461 ms

    10 64.233.174.187 (64.233.174.187) 46.557 ms 52.380 ms 72.14.232.239 (72.14.232.239) 46.765 ms

    11 64.233.174.18 (64.233.174.18) 48.761 ms 49.411 ms 48.771 ms

    12 66.102.9.104 (66.102.9.104) 46.767 ms 46.974 ms 46.572 ms

    update-rc.d Les scripts (potentiellement) lancs au dmarrage sont placs par convention dans /etc/init.d/. Lorsque Linux dmarre en runlevel X, il lance automatiquement au dmarrage les excutables situs dans le rpertoire/etc/rcX.d, avec 0 X 6, ceux-ci tant des liens symboliques vers les scripts de /etc/init.d/. Pour ajouter ou retirer un script du dmarrage de la machine, il faut donc crer le script dans /etc/init.d/ et placer un lien symbolique dans le rpertoire associ au runlevel voulu. Par convention ces liens symboliques sont de la forme : par exemple S23ntp.

    S si on veut lancer le script ; K pour ne pas le lancer. va dterminer l'ordre de lancement (croissant) des scripts du

    rpertoire, de 00 99 (00 tant lanc en premier). Quand on veut ajouter un programme au dmarrage c'est donc assez fastidieux ; heureusement il existe une commande qui le fait votre place, c'est update-rc.d. Pour retirer le dmon cupd de tous les runlevel (cela supprimera les liens symboliques des rpertoires /etc/rcX.d) :

    update-rc.d -f cupsys remove Removing any system startup links for /etc/init.d/cupsys ... /etc/rc1.d/K19cupsys /etc/rc2.d/S19cupsys /etc/rc3.d/S19cupsys /etc/rc4.d/S19cupsys /etc/rc5.d/S19cupsys On voit qu'il se lanait au dmarrage de la machine en runlevel 2 (dmarrage normal), 3, 4 et 5, mais pas en runlevel 1 (single user).

    Pour ajouter un script au dmarrage de la machine :

    update-rc.d mount_mp3 defaults

    Cela va placer des liens pour les runlevel 2 5.

    Liens Securing Debian howto : Dsactivation de services dmon

  • umount Dmonter une partition (cf mount).

    uname Affiche des informations sur le systme.

    uname -a

    NetBSD stag-12-11 3.99.17 NetBSD 3.99.17 (GENERIC_MOD) #0: Fri Apr 21 15:32:24 CEST 2006 dude@stag-12-11:/usr/obj/sys/arch/i386/compile/GENERIC_MOD i386

    ou encore

    uname -a

    Linux tiga 2.6.16-2-k7 #1 Fri Aug 18 19:48:42 UTC 2006 i686 GNU/Linux

    On peut slectionner la colonne de sortie :

    -i nom de la plateforme matrielle (unknown) -m nom de l'architecture de la machine (i686) -n nom d'hte (tiga) -o nom du sytme d'exploitation (GNU/Linux) -p type de processeur (unknown) -r version du noyau (2.6.16-2-k7) -s nom du noyau (Linux) -v version du noyau (#1 Fri Aug 18 19:48:42 UTC 2006)

    On peut obtenir des informations encore plus dtailles avec la commande :

    # cat /proc/version

    Linux version 2.6.26-1-686 (Debian 2.6.26-13) ([email protected]) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-24)) #1 SMP Sat Jan 10 18:29:31 UTC 2009

    uniq vite la rptition de lignes adjacentes identiques ; prend en paramtre un fichier ou son entre standart.

    -u seules les lignes existant en un seul exemplaire sont fournies -n le nombre d'occurrences de chaque ligne est affich

    uptime Indique depuis quand le systme t mis en route.

    uptime

  • 15:00:52 up 1 day, 1:35, 2 users, load average: 0.00, 0.00, 0.00

    Dans l'ordre, cela affiche :

    l'heure l'uptime (temps coul depuis le dernier dmarrage de la machine) le nombre d'utilisateur(s) loggus sur la machine la charge CPU instantane, depuis 5 minutes et depuis 15 minutes

    useradd/userdel Pour crer ou supprimer un utilisateur sur le systme.

    usermod Pour modifier les paramtres d'un utilisateur, par exemple changer son groupe initial et son shell par dfaut :

    usermod -g new_group user1 -s /bin/bash

    vi Un diteur de texte en mode texte plus ou moins fourni par dfaut avec les distributions actuelles.

    vipw C'est la commande utiliser pour diter, avec vi, le fichier /etc/passwd (il met les verrous qui vont bien pour viter des conflits d'accs).

    vmstat Affiche des statistiques sur la mmoire virtuelle.

    vmstat

    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

    r b swpd free buff cache si so bi bo in cs us sy id wa

    0 0 424 69556 145732 53768 0 0 157 106 163 186 1 1 98 1

    bi et bo sont les IOs du systme.

    w Affiche le rsultat de la commande uptime ainsi que la liste des utilisateur loggus sur la machine.

    w

    14:58:52 up 1 day, 1:33, 2 users, load average: 0,00, 0,00, 0,00

    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

    dude pts/0 stag-12-11.ipv6. 14:20 0.00s 0.13s 0.00s w

  • dude pts/1 dude Mon18 4:51 0.07s 0.07s -bash

    watch watch permet de relancer automatiquement toutes les 2s par dfaut, en plein cran On peut spcifier l'intervalle de temps pour relancer la commande (-n ), et surligner les diffrences (-d). Par exemple, pour lancer la commande free toutes les secondes et surligner les diffrences :

    watch -n 1 -d free

    wc Est un utilitaire qui permet d'afficher (respectivement) le nombre de lignes, mots, et caractres (en fait il s'agit du nombre d'octets) du fichier :

    wc /etc/passwd

    32 39 1380 /etc/passwd

    On peut ne slectionner que certaines colonnes de la sortie, en n'affichant que les lignes (-l), les mots (-w), les octets (-c).

    whatis Affiche une brve description d'une commande.

    whatis cat

    cat (1) - concatenate files and print on the standard output

    whereis Affiche le nom d'une commande, l'emplacement de celle-ci ainsi que de sa page de manuel.

    whereis cat

    cat: /bin/cat /usr/share/man/man1/cat.1.gz

    which Permet de localiser le binaire d'une commande

    which ls

    /bin/ls

    who Affiche les utilisateurs connects la machine, et depuis quand.

    who

    root pts/0 Jun 9 10:15 (10.0.0.20)

  • Permet aussi d'afficher le runlevel prcdent et courant (comme la commande runlevel) :

    who -r

    run-level 3 May 31 11:36 last=S

    xargs Redirige son entre sur les paramtres d'une autre fonction, donne en paramtre :

    echo "toto" | xargs echo

    enverra toto dans les paramtres du deuxime echo. Mais j'avoue, l'intrt reste limit. en revanche :

    ps auxw | grep serveur.php | grep -v grep | awk '{print $2}' | xargs kill -15

    permet de rcuprer le pid de serveur.php pour envoyer lui envoyer un SIGTERM ; car kill ne lit pas son entre standart ; il est donc impossible de le piper (|) avec d'autres commandes.

    Commandes Linuxaptarpaspellatawkbadblocksbatchbgcalcatcdchattr/lsattrchmodThorie des droits sous LinuxMthode numriqueMthode symbolique

    chshclearcommcpcroncutdatedddiffdisowndmesgdfdpkgduechoenvethtoolexitexprforfgfilefindExemples

    flockfingerfreeftpfusergrep*grepTips

    gunzipgzipheadhelphistoryhosthostnameidifup/ifdownifconfiginfoipiptablesPrincipeLes optionsLes extensionsRedirectionExemplesLiens

    jobskillkillalllastlastblastlogletlnlocatelogoutlooklslshwlsmodlsoflspcimailmanmii-toolmodconfmountnetcatnetstatnslookuppasswdpastepingOptions avances

    pmappsresetrevrouterunlevelsedLiens utiles

    seqsetshufshutdownsortsplitstringssutailtartelnettimetoptrtracerouteupdate-rc.dLiens

    umountunameuniquptimeuseradd/userdelusermodvivipwvmstatwwatchwcwhatiswhereiswhichwhoxargs