Commandes GNU/Linux en vrac – Partie 4
Bonjour à tous ! Aujourd’hui le 3ème article de la série « Commandes GNU/Linux en vrac ». Les autres sont disponibles ici :
- 1er : https://net-security.fr/system/commandes-gnu-linux-en-vrac-partie-1
- 2ème : https://net-security.fr/system/commandes-gnu-linux-en-vrac-partie-2
- 3ème : https://net-security.fr/system/commandes-gnu-linux-en-vrac-partie-3
Le but est de présenter et de vous faire découvrir des commandes et des outils qui pourraient être utiles pour vous.
Commande time
La commande time
va permettre d'évaluer la durée d'exécution d'un script ou d'une commande. Très intéressant pour voir les performances de votre dernier script par exemple.
La forme est la suivante :
time options commande
Prenons un exemple avec la commande ls
:
time ls
Le retour donne :
1$ time ls
2real 0m0.005s
3user 0m0.001s
4sys 0m0.004s
real
: indique le temps réel que la commande a demandé pour s'exécuteruser
: indique le temps de l'utilisateur (CPU utilisé par le programme)sys
: indique le temps système (temps utilisé par le système pour la tâche)
Pour utiliser un format POSIX plus lisible :
1tzkuat@tzkuat-pc:~$ time -p sudo apt update
2[sudo] password for tzkuat:
3Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
4Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
5[...]
6Get:40 http://archive.ubuntu.com/ubuntu jammy-backports/multiverse amd64 c-n-f Metadata [116 B]
7Fetched 21.9 MB in 34s (643 kB/s)
8Reading package lists... Done
9Building dependency tree... Done
10Reading state information... Done
1151 packages can be upgraded. Run 'apt list --upgradable' to see them.
12
13real 45.50
14user 0.06
15sys 0.15
La commande a donc pris 45 secondes pour s'exécuter.
Comme pour les autres commandes, il est possible d'utiliser des options, elles sont toutes disponibles avec la commande man time
.
Commande timeout
La commande timeout
, sert, comme son nom l'indique à rajouter un timeout
à une commande ou à un script.
La forme est la suivante :
timeout options durée commande
Prenons l'exemple d'une commande nmap
, elles peuvent durer jusqu'à plusieurs heures/jours. Si vous voulez qu'elle s'arrête après 2h si la commande n'est pas terminée, il suffit de lancer la commande suivante :
timeout 2h nmap <cible>
Pour les durées vous pouvez utiliser :
s
: (qui est la valeur par défaut) pour les secondesm
: pour les minutesh
: pour les heursd
: pour les jours
Exemple avec un simple ping :
1tzkuat@tzkuat-pc:~$ timeout 5 ping archive.org
2PING archive.org (207.241.224.2) 56(84) bytes of data.
364 bytes from www.archive.org (207.241.224.2): icmp_seq=1 ttl=47 time=139 ms
464 bytes from www.archive.org (207.241.224.2): icmp_seq=2 ttl=47 time=139 ms
564 bytes from www.archive.org (207.241.224.2): icmp_seq=3 ttl=47 time=139 ms
664 bytes from www.archive.org (207.241.224.2): icmp_seq=4 ttl=47 time=139 ms
764 bytes from www.archive.org (207.241.224.2): icmp_seq=5 ttl=47 time=139 ms
8tzkut@tzkuat-pc:~$
Il est aussi possible de spécifier le signal à envoyer pour terminer l'opération. Je suis loin d'être un expert, mais il est possible d'envoyer tous les signaux disponibles via la commande kill -l
:
1tzkuat@tzkuat-pc:~$ kill -l
2 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
3 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
411) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
516) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
621) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
726) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
831) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
938) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
1043) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
1148) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
1358) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
1463) SIGRTMAX-1 64) SIGRTMAX
Par défaut, le signal SIGTERM
est utilisé mais il peut être ignoré par certains programmes.
Un exemple en utilisant SIGKILL
(aussi possible via le numéro) :
timeout -s SIGKILL 2s ping archive.org
timeout -s 9 2s ping archive.org
Résultat :
1tzkuat@tzkuat-pc:~$ timeout -s SIGKILL 2 ping archive.org
2PING archive.org (207.241.224.2) 56(84) bytes of data.
364 bytes from www.archive.org (207.241.224.2): icmp_seq=1 ttl=47 time=139 ms
464 bytes from www.archive.org (207.241.224.2): icmp_seq=2 ttl=47 time=139 ms
5Killed
Encore une fois, si cela vous intéresse, vous trouverez toutes les options avec la commande man timeout
.
Commande visudo
La gestion des privilèges est la base de la sécurité pour les systèmes GNU/Linux. Pour gérer ces privilèges il faut modifier le fichier /etc/sudoers
que vous connaissez déjà probablement.
Il est très facile de faire une bêtise en modifiant ce fichier, rendant la configuration inutilisable. Pour modifier ce fichier, j'ai longtemps utilisé des éditeurs comme vi
ou encore nano
, ce qui est en soi une très mauvaise pratique.
C'est là qu'intervient visudo
. Cette commande ouvre un éditeur de texte comme vi
ou encore nano
, mais au moment d'enregistrer l'outil va valider la syntaxe du fichier, ce qui n'est pas le cas en utilisant directement les éditeurs classiques.
Même si vous tapez visudo
, il est possible que l'outil utilise nano
pour ouvrir le fichier. Cela va dépendre de l'éditeur par défaut de votre système, à vous de l'adapter en fonction.
Commande mtr
J'ai découvert récemment l'outil mtr
via le site Tecmint :
Cet outil en ligne de commande est un utilitaire de diagnostique réseau (c'est toujours la faute du réseau de toute façon...), il conbine ping
et traceroute
en une seule interface (l'outil existe aussi en interface graphique avec mtr-gtk). C'est à dire que le traceroute se fait via l'ICMP et non l'UDP.
Cela permet d'avoir en un coup d'oeil, l'ensemble des sauts entre deux machines avec la latence de chaque saut. Il peut être alors intéressant de lancer l'outil afin de vérifier la connectivité entre deux machines, afin de voir à quel niveau la latence est la plus élevée, c'est un outil très pratique pour détecter des problèmes sur des équipements.
Il est aussi possible de lancer la commande pour une longue durée, notamment après des migrations afin d'évaluer les évolutions par exemple.
Pour l'utiliser, il suffit de lancer la commande :
mtr <domaine ou IP>
Voici un exemple pour mtr archive.org
depuis un VPS de chez Gandi :
L'outil est complet et il est possible d'utiliser plusieurs options et affichages :
Une fois la commande lancée, le menu via le CLI est interactif, il suffit d'appuyer sur r
pour remettre les compteurs à zéro, d
pour changer l'affichage...
Si cela vous intéresse, toutes les options sont disponibles via la commande man mtr
.
J’espère que cet article vous aura plu, si vous avez des questions ou des remarques sur ce que j’ai pu écrire n’hésitez pas à réagir avec moi par mail ou en commentaire ! N’hésitez pas à me dire également si ce genre d’article vous plaît !
Merci pour votre lecture et à bientôt !