Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 23 juillet 2017

Commandes ifconfig et netstat sur Debian 9

Si vous avez installé Debian 9 récemment, vous aurez surement constaté que les commandes ifconfig et netstat entre autres ne semblent plus présentes sur le système:

debian@stretch:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.0 (stretch)
Release:        9.0
Codename:       stretch
debian@stretch:~$ /sbin/ifconfig
-bash: /sbin/ifconfig: Aucun fichier ou dossier de ce type
debian@stretch:~$ netstat
-bash: netstat : commande introuvable

Pour ceux qui les utilisent quotidiennement cela peut être gênant.

En fait ces commandes existent encore, pour l'instant, et nécessitent sur Debian 9 l'installation du paquet net-tools qui n'est maintenant plus installé par défaut:

sudo apt-get install net-tools

Dans un prochain billet on pourra voir par quelles commandes ifconfig et netstat sont remplacées.

samedi 4 mars 2017

Trouver facilement votre adresse ip sans parser la sortie de la commande ifconfig

Combien de fois avez-vous eu besoin de connaître l'adresse IP de telle ou telle interface réseau sur une machine physique ou virtuelle ?

Quand on pose cette question la réponse ne se fait pas attendre:

Baahhh, tu n'as qu'à parser la sortie d'ifconfig !

En effet, la sortie de la commande ifconfig ressemblant à ceci:

debian@debian-jessie:~$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:ae:00:9f  
          inet adr:10.0.2.15  Bcast:10.0.2.255  Masque:255.255.255.0
          adr inet6: fe80::a00:27ff:feae:9f/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:136 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:43715 (42.6 KiB)  TX bytes:22029 (21.5 KiB)

Il est possible de parser cette sortie par exemple de la façon suivante:

    /sbin/ifconfig eth0 2> /dev/null | grep 'inet adr:' | cut -d : -f2 | awk '{ print $1}'

Déjà, c'est un peu lourdingue. Ensuite, on ne teste aucune erreur possible, par exemple si la sortie affiche "inet addr" avec deux "d" au lieu d'un, ce qui est le cas sur certaines distributions Linux, on voit ben qu'il faudra modifier la commande grep.

En fait, vous n'êtes pas obligés de parser la sortie d'ifconfig, et on peut obtenir cette adresse ip beaucoup plus simplement avec la commande ifdata.

Pour l'installer:

sudo apt-get install moreutils

Et pour afficher l'adresse:

debian@debian-jessie:/home/debian# ifdata -pa eth0
10.0.2.15

Comme vous le voyez la commande ifdata est très simple à utiliser et elle nous permet également de connaitre toutes les caractéristiques de ce réseau comme l'adresse de broadcast, le masque de sous-réseau, ...

Par exemple pour l'adresse de broadcast:

debian@debian-jessie:/home/debian# ifdata -pb eth0
10.0.2.255

Et pour voir l'ensemble des flags possibles de la commande:

debian@debian-jessie:/home/debian# ifdata 
Usage: ifdata [options] iface
     -e   Reports interface existence via return code
     -p   Print out the whole config of iface
    -pe   Print out yes or no according to existence
    -pa   Print out the address
    -pn   Print netmask
    -pN   Print network address
    -pb   Print broadcast
    -pm   Print mtu
    -ph   Print out the hardware address
    -pf   Print flags
    -si   Print all statistics on input
   -sip   Print # of in packets
   -sib   Print # of in bytes
   -sie   Print # of in errors
   -sid   Print # of in drops
   -sif   Print # of in fifo overruns
   -sic   Print # of in compress
   -sim   Print # of in multicast
    -so   Print all statistics on output
   -sop   Print # of out packets
   -sob   Print # of out bytes
   -soe   Print # of out errors
   -sod   Print # of out drops
   -sof   Print # of out fifo overruns
   -sox   Print # of out collisions
   -soc   Print # of out carrier loss
   -som   Print # of out multicast
  -bips   Print # of incoming bytes per second
  -bops   Print # of outgoing bytes per second