mardi 13 janvier 2015

Compendium sur les commandes linux utiles en réseau et système

Je fais ici un petit inventaire de commandes Linux utiles voire indispensables pour aborder le dépannage d'un réseau/système. Si vous souhaitez plus d'informations sur une de ces commandes : man! RTFM après tout.
Et n'hésitez pas à me signaler si vous voyez d'autres outils à ajouter.

Réseau

Il s'agit ici des commandes classiques pour configurer et surtout dépanner votre réseau.

La commande ifconfig 

La commande ifconfig permet la configuration locale ou à distance des interfaces réseau de tous types d'équipements (unité centrale, routeur). Sans paramètres, la commande ifconfig permet d'afficher les paramètres réseau des interfaces. Sous Debian, la configuration de l'adresse IP peut se faire avec Network-Manager (pas sur un serveur) et via le fichier /etc/network/interfaces.

La commande ping 

Outil très connu, la commande ping est en général très mal utilisée, les utilisateurs se contentant d'un ping google.fr avant de décréter que rien ne fonctionne. Voici une proposition de tests à faire avant de crier au désastre.
ping 127.0.0.1 adresse de bouclage
ping 172.16.1.1 adresse locale
ping 172.16.1.2 adresse d'une autre machine de notre réseau
ping 172.16.1.254 adresse de notre passerelle
ping ... adresses de toutes les passerelles connues
ping 8.8.8.8 adresse de google
ping 172.16.0.11 adresse du serveur DNS
ping google.fr adresse de google avec résolution de nom

La commande arp 

La commande arp permet de visualiser ou modifier la table du cache arp de l'interface. Cette table peut être statique et/ou dynamique. Elle donne la correspondance entre une adresse IP et une adresse MAC (Ethernet).
Le cache ARP est obtenu avec la commande arp -va
Utiliser arp -d pour supprimer une entrée
Un ping ultérieur permettra d'obtenir des informations fraîches.

La commande route 

Le routage définit le chemin emprunté par les paquets entre un point de départ et un point d'arrivée. La commande route permet également la configuration de pc, de switchs et de routeurs. Sans vouloir nous appesantir sur le routage ici, l'affichage des routes connues par la machine est un indice très intéressant. On utilise route -n pour ce faire.

La commande netstat 

La commande netstat permet de tester la configuration du réseau, visualiser l'état des connexions, établir des statistiques, notamment pour surveiller les serveurs. Pour information, netstat -nr donne la table de routage de la machine, comme route -n.

La commande traceroute 

La commande traceroute permet d'afficher le chemin parcouru par un paquet pour arriver à destination. Cette commande est importante, car elle permet d'équilibrer la charge d'un réseau, en optimisant les routes.

La commande dig 

La commande dig remplace ce qui était la commande nslookup. Cette commande sert à diagnostiquer des dysfonctionnements dans la résolution de noms (service DNS). Elle affichera le contenu de la réponse obtenue auprès du serveur DNS.

La commande host 

La commande host interroge les serveurs de noms. Elle peut par exemple être utilisée pour détecter des dysfonctionnement sur un réseau (serveurs hors services). Attention, n'utilisez pas cette commande sur des réseaux dont vous n'avez pas l'administration.

Système

Passons aux commandes utiles pour mieux cerner, dépanner, configurer votre système.

La commande lsof 

La commande lsof permet de lister les fichiers ouverts et les processus actifs.
Pour indiquer les processus de type internet : lsof -i 
On peut ne demander que pour un protocole lsof -ni tcp:25 
ou que vers une machine : lsof -ni @192.168.0.1:25
La forme suivante de la commande permet de connaître tous les fichiers ouverts par l'utilisateur 500 ou toto ou par le processus 1234 ou 12345. lsof -p 1234, 12345 -u 500, toto

La commande telnet 

Telnet était l'outil indispensable à connaître. Malheureusement, elle pose de sérieux problèmes de sécurité (elle transmet les mots de passe en clair sur le réseau). C'est pourquoi on lui préfère la commande ssh surtout si on doit s'en servir sur un réseau local ou sur internet.

La commande tcpdump 

La commande tcpdump permet de faire des captures de paquets sur votre réseau. Il n'est pas le plus agréable à utiliser des utilitaires de ce type et on trouve bien plus convivial dans l'interface.

La commande nmap 

nmap est un outil pour scanner les ports ouverts sur une machine distante. Énormément d'options sont disponibles. Il existe une surcouche graphique nommée Zenmap.

La commande top 

Un outil indispensable pour afficher les processus les plus gourmands de votre machine. 

La commande who 

Cette commande permet l'affichage des utilisateurs connectés.

La commande tload

tload affiche la charge CPU sous forme de graphique.

La commande ps

Cette commande affiche les processus exécutés sur la machine.
ps -ef : affiche tous les processus lancés.
ps -ejH: afficher process en arbre

La commande kill

Complément régulier de la commande précédente kill permet de tuer un processus (via son PID)
kill -9 : force à quitter
killall : quitte toutes les occurrences d’un programme

Les commandes halt, reboot et shutdown

halt, reboot, shutdown permettent l'arrêt, le redémarrage, ou la programmation de cet arrêt ou redémarrage.

La commande last

Pour obtenir l'historique des connexions : last.

La commande df

df sert à connaître le remplissage des disques (l’option -h permet d’obtenir les tailles en « human readable »).

La commande fdisk

Pour afficher la table des partitions, utiliser fdisk -l.

La commande free

free indique l’allocation de la ram et la mémoire libre restante.
free -m : information sur la mémoire

La commande vmstat

vmstat permet l'obtention d'information sur la ram, le swap, et l'utilisation cpu.

La commande hostname

hostname affiche le nom d’hôte de la machine conformément à ce qui est écrit dans le fichier /etc/hostname.

La commande uname

uname permet de récupérer des informations sur le système et le matériel.

La commande lsb_release

lsb_release -a donne toutes les informations sur la distribution.

La commande lspci

lspci liste tous les périphériques PCI.

La commande lsusb

lsusb liste tous les périphériques USB.

La commande dmesg

dmesg affiche les messages loggés par le buffer du noyau.

La commande apt-cache

apt-cache permet la gestion des paquets. Deux options sont très utiles
apt-cache search nom_paquet, permet de chercher un paquet,
et apt-cache show, permet d’obtenir des détails sur un paquet.

La commande apt-get

apt-get quqnt à lui permet la gestion des paquets. Les commandes que l’on utilisera le plus sont
update : mise à jour des sources de paquets disponibles,
upgrade : mise à jour du système et autres logiciels,
install : apt-get intall paquet-à-installer pour installer un nouveau logiciel et ses dépendances,
purge : permet de désinstaller un paquet de manière plus « propre » que remove car cela efface aussi les fichiers de configuration.

La commande dpkg

dpkg commande travaillant sur les paquets.
Pour obtenir des informations sur les paquets installés (options pour lister tous les paquets, désinstaller, etc.).
dpkg --get-selections : liste des paquets installés  
Mais aussi pour installer un paquet téléchargé : dpkg --install

La commande make

make permet de compiler un programme dont on détient les sources. La procédure classique est la suivante :
./configure (à lancer avec –help pour voir les différentes options de compilation) qui lance le script de configuration qui vérifie la présence de toutes les dépendances et écrit le fichier makefile qui contient les ordres de compilation,
make qui lance la compilation
et enfin make install qui installe le logiciel.

La commande update-rc.d

update-rc.d permet de configurer le démarrage ou l’arrêt automatique de service au démarrage de la machine ou selon le runlevel. On donne en argument le nom du service et l’action (remove ou default pour l’ajout) update-rc.d -f apache2 remove
-f permet de forcer l’effacement du lien symbolique même si le nom existe encore. On peut aussi placer un script de démarrage dans répertoire /etc/init.d ou le renseigner le fichier /etc/rc.local (qui a lui-même un lien symbolique dans /etc/init.d).

Quelques commandes supplémentaires

cat /etc/passwd affiche les utilisateurs.
cat /etc/group affiche les groupes.
which localise une commande. ex : which cat /bin/cat.
whereis localiser un fichier binaire.