User Tools

Site Tools


informatique:linux:commandes_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:linux:commandes_linux [2017/09/28 07:54] – [type] pteuinformatique:linux:commandes_linux [2024/03/21 07:14] (current) – [NetworkManager] pteu
Line 1: Line 1:
-{{tag>commandes linux système}} 
- 
 ====== Commandes Linux ====== ====== Commandes Linux ======
  
 Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant ''man <commande>'' dans un terminal, ou en consultant l'aide située dans le dossier **/usr/share/doc**. Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant ''man <commande>'' dans un terminal, ou en consultant l'aide située dans le dossier **/usr/share/doc**.
  
-Les commandes réseaux sont décrites ici : [[linux configuration réseau]]+Les commandes réseaux sont décrites ici : [[informatique:linux:reseau|Le réseau sous Linux]]
  
  
Line 67: Line 65:
  
  
 +=====arping=====
 +
 +Détecter une adresse IP usurpée / duplicate :
 +<code bash>
 +arping -D -q -I eth0 -c 2 192.168.0.5
 +</code>
 =====aspell===== =====aspell=====
 Vérificateur d'orthographe interactif en ligne de commande. Vérificateur d'orthographe interactif en ligne de commande.
Line 86: Line 90:
 Permet de programmer l'exécution d'une tâche à une heure donnée (une seule exécution, à la différence [[cron]]). La syntaxe est ''at heure jour'' ; puis on saisi une commande par ligne ; et enfin on quitte l'outil par un ''ctrl+d'' (''<EOT>''). Le jour n'est pas obligatoire ; par défaut 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). Permet de programmer l'exécution d'une tâche à une heure donnée (une seule exécution, à la différence [[cron]]). La syntaxe est ''at heure jour'' ; puis on saisi une commande par ligne ; et enfin on quitte l'outil par un ''ctrl+d'' (''<EOT>''). Le jour n'est pas obligatoire ; par défaut 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).
  
-Enfin, on peut spécifier l'heure d'exécution en chiffres au format : ''at -t "YYMMDDmmHH"''.+On peut spécifier l'heure d'exécution en chiffres au format : ''at -t "YYMMDDmmHH"''. 
 + 
 +  * ''at'' : créer une tâche 
 +  * ''atq'' : lister les tâches programmées et affiche leur ID 
 +  * ''at -c <ID>'' : afficher le contenu de la tâche n°<ID> 
 +  * ''atrm <ID>'' : supprimer la tâche <ID>
  
 <code bash> <code bash>
Line 112: Line 121:
 On peut utiliser les fichier ''/etc/at.allow'' et ''/etc/at.deny'' pour gérer des permissions d'accès à la commande ''at''. On peut utiliser les fichier ''/etc/at.allow'' et ''/etc/at.deny'' pour gérer des permissions d'accès à la commande ''at''.
  
 +On peut consulter les journaux d'exécution du processus **atd** par défaut dans le fichier ''/var/log/messages'' :
 +<code bash>
 +Jul 19 02:30:00 bast2 atd[221981]: Starting job 17 (a0001101a5b44a) for user 'admin' (2006)
 +</code>
 +
 +=====auditd=====
 +
 +Permet d'auditer / debugguer des comportements bas niveau du système, comme par exemple déterminer quel processus réalise des requêtes :
 +<code bash>
 +apt install auditd
 +
 +# mise en place de l'audit
 +auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
 +# lister les logs de l'audit
 +ausearch -i -ts today -k SOCKET
 +# supprimer l'audit
 +auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
 +</code>
 +src: [[https://serverfault.com/questions/192893/how-can-i-identify-which-processes-are-generating-udp-traffic-on-linux|how-can-i-identify-which-processes-are-generating-udp-traffic]]
  
 =====awk===== =====awk=====
Line 146: Line 174:
 (voir ''jobs'') (voir ''jobs'')
  
 +=====blkid=====
  
 +Affiche les attributs des disques/partitions :
 +<code bash>
 +/dev/sda1: UUID="b0ab5b55-45e9-1cf9-3017-a5a8c86610be" TYPE="linux_raid_member" PARTUUID="5f04e8c2-ff94-4ab2-a129-3be865a326e1"
 +/dev/sda2: UUID="0a4130a8-429a-d46f-3017-a5a8c86610be" TYPE="linux_raid_member" PARTUUID="97ac67bb-ce66-475b-9e62-3e67fd0b1132"
 +/dev/sdb1: UUID="b0ab5b55-45e9-1cf9-3017-a5a8c86610be" TYPE="linux_raid_member" PARTUUID="bd37f026-6d63-4757-957d-d3eaef8666ea"
 +/dev/sdb2: UUID="0a4130a8-429a-d46f-3017-a5a8c86610be" TYPE="linux_raid_member" PARTUUID="8bc69d02-11a2-4616-9b2a-751f995076ea"
 +/dev/md0: LABEL="sys" UUID="381c49fe-1b04-47d4-8b0a-e55e1d68a4fb" TYPE="btrfs"
 +/dev/md1: UUID="58833cb6-9a9f-4991-a121-99e64bc8d3e5" TYPE="swap"
 +</code>
 =====cal===== =====cal=====
  
Line 268: Line 306:
   * effacement total : ''chattr +s fichier''   * effacement total : ''chattr +s fichier''
  
 +
 +=====chkconfig=====
 +
 +Commande pour configurer les services activer au démarrage du système.
 +<code bash>
 +# lister les états de tous les services
 +chkconfig --list
 +
 +# activer le service toto (resp. désactiver avec "off")
 +# optionnel : préciser les runlevels concernés, par défaut 2345)
 +chkconfig toto on [--level 35]
 +
 +# lister l'état du service toto (pour chaque runlevel)
 +chkconfig --list toto
 +toto        0:arrêt 1:arrêt 2:marche 3:marche 4:marche 5:marche 6:arrêt
 +</code>
  
 =====chmod===== =====chmod=====
Line 364: Line 418:
   * ''-3'' : supprimer les lignes uniques des 2 fichiers   * ''-3'' : supprimer les lignes uniques des 2 fichiers
  
 +=====command=====
  
 +Permet de lancer la commande fournie en paramètre en ne la recherchant que dans les commandes système ou dans le PATH. Invoquée avec ''-v'' ou ''-V'', affiche une description de la commande ; invoquée avec ''-p'' elle recherchera la commande spécifiée dans le PATH par défaut.
 +
 +<code bash>
 +command -V cd
 + cd est une primitive du shell
 +</code>
 =====cp===== =====cp=====
 **c**o**p**y ; copier de fichier. **c**o**p**y ; copier de fichier.
Line 396: Line 457:
 <code bash> <code bash>
 # Pour afficher la date au format YYYY/MM/JJ-HH:MM:SS : # Pour afficher la date au format YYYY/MM/JJ-HH:MM:SS :
-date +%Y/%m/%d-%H:%M:%S +date "+%Y/%m/%d %H:%M:%S" 
-2009/06/25-15:07:56+2009/06/25 15:07:56
  
 # afficher le compteur (timestamp) de l'heure actuelle : # afficher le compteur (timestamp) de l'heure actuelle :
-date +%s+date "+%s"
 1441816670 1441816670
  
Line 412: Line 473:
 # afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) : # afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) :
 date --date='5 month 4 day' date --date='5 month 4 day'
 +# afficher la date, 89 jours après le 26 mai 2022 :
 +date -d "26 may 2022 +89 days"
 + Tue Aug 23 00:00:00 UTC 2022
  
 # mettre à jour la date et l'heure du système : # mettre à jour la date et l'heure du système :
Line 417: Line 481:
 </code> </code>
  
 +Pour comparer des dates, on les convertit au format ''%s'' (nombre de secondes depuis 1970) :
 +<code bash>
 +date=$(date -d 2020-12-15 +%s)
 +now=$(date +%s)
 +
 +if [ $date -lt $now ]; then
 +    echo "date est dans le passé !"
 +fi
 +</code>
 =====dd===== =====dd=====
  
Line 434: Line 507:
 <code bash> <code bash>
 pkill -USR1 dd pkill -USR1 dd
 +</code>
 +
 +
 +=====declare=====
 +
 +Permet de déclarer des variables en bash et leur affecter des attributs ; il équivaut à la commande ''typeset'' (les options sont les mêmes) à partir de bash v2+, alors que ''typeset'' est compatible ksh. Invoqué sans paramètre, ''declare'' affiche la liste des variables existantes dans l'environnement. Pour ne lister que les fonctions, utiliser le flag ''-f''.
 +
 +Liste des attributs existants :
 +  * ''-a'' : tableau indexé (//array//)
 +  * ''-A'' : tableau associatif
 +  * ''-i'' : entier (//integer//)
 +  * ''-l'' : la variable ne peut contenir que des caractères en minuscules ; les majuscules sont converties (//lowercase//)
 +  * ''-u'' : la variable ne peut contenir que des caractères en majuscules ; les minuscules sont converties (//uppercase//)
 +  * ''-r'' : constante (//readonly//)
 +  * ''-x'' : exporter la variable (//export//)
 +  * ''-p'' : affiche le contenu de la variable qui suit
 +  * ''-f'' : lister le contenu de la fonction qui suit
 +
 +Utiliser ''+'' à la place de ''-'' permet de désactiver l'attribut d'une variable (ne fonctionne pas pour l'attribut ''+a'' (tableaux indexés)).
 +
 +<code bash>
 +# exemple d'utilisation d'un entier
 +declare -i int=2
 +echo "int vaut $int"      # "int vaut 2"
 +let "int += 1"
 +echo "int vaut $int"      # "int vaut 3"
 +unset int
 +
 +# exemple d'utilisation d'une constante
 +declare -r const=pierre
 +echo "const vaut $const"  # "const vaut pierre"
 +const=sable               # "-bash: const : variable en lecture seule"
 +echo "const vaut $const"  # "const vaut pierre"
 </code> </code>
  
Line 460: Line 566:
 =====dig===== =====dig=====
  
-A l'instar de ''nslookup'', **dig** est un outil d'interrogation de DNS. Quelques //use case// :+A l'instar de ''nslookup'', **dig** est un outil d'interrogation de DNS (beaucoup plus fin cependant). Quelques //use case// :
 <code bash> <code bash>
 dig +short www.free.fr        # résoudre le nom google.fr avec une sortie au format court (affichage uniquement des IPs) dig +short www.free.fr        # résoudre le nom google.fr avec une sortie au format court (affichage uniquement des IPs)
Line 469: Line 575:
 dig +short -x 212.27.48.10    # résolution inverse avec un résultat au format court (affiche uniquement les noms) dig +short -x 212.27.48.10    # résolution inverse avec un résultat au format court (affiche uniquement les noms)
 www.free.fr www.free.fr
 +
 +dig +trace google.fr          # mode debug pour analyser la résolution DNS
 +
 +dig txt pteu.fr               # requêter les champs TXT du domaine
 +dig mx pteu.fr                # MX (serveur de mail) du domaine
 +dig pteu.fr @9.9.9.9       # interroger le @serveurDNS spécifié
 +dig pteu.fr @127.0.0.1 -p5353      # interroger le @serveurDNS spécifié sur un port perso (non standard)
 +dig +noall +answer pteu.fr    # permet de n'afficher que la ligne le résultat (ANSWER) de la requête
 </code> </code>
  
 +Récupérer le numéro de série (serial number) d'une zone (enlever //+short// pour un résultat plus verbeux) :
 +<code bash>
 +dig +short SOA pteu.fr
 +dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300
 +</code>
 +
 +Interroger tous les serveurs faisant autorité d'une zone :
 +<code bash>
 +dig +nssearch pteu.fr
 +SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.188.149 in 0 ms.
 +SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001:41d0:1:4a95::1 in 0 ms.
 +SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001:41d0:1:1995::1 in 2 ms.
 +SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.128.149 in 2 ms.
 +</code>
 =====dirname===== =====dirname=====
  
Line 493: Line 621:
 =====dmesg===== =====dmesg=====
  
-Affiche les messages émis lors du boot (on y trouve aussi les messages lors du branchement d'un disque USB).+Affiche les messages émis par le noyau depuis le dernier démarrage.
  
 +<code bash>
 +dmesg | head -1
 +[    0.000000] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 
 +(Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27)
 +[..]
  
 +# pour convertir les temps en date
 +dmesg -T
 +[mer. janv.  2 18:18:44 2019] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version
 +6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27)
 +[..]
 +</code>
 =====df===== =====df=====
  
Line 524: Line 663:
 =====du===== =====du=====
  
-Permet d'afficher la taille des contenus d'un répertoire ; l'option ''-h'' fait la même chose qu'avec la commande ''df''l'option ''-s'' (//summurize//) permet de n'afficher la taille que du dossier courant. +Permet d'afficher la taille des fichiers d'un répertoire 
-  du -sh +  * ''-h'' permet d'utiliser l'unité appropriée en fonction de la taille du fichier (kilo, mégas, gigas, etc..) 
-   437M    .+  * ''-s'' (//summurize//) permet de n'afficher la taille que du dossier courant. 
 +<code bash> 
 +du -sh 
 + 437M    . 
 +</code>
  
 Pour limiter l'affichage des répertoires du dossier courant : Pour limiter l'affichage des répertoires du dossier courant :
-  du -h --max-depth=1 +<code bash> 
-   4,0K    ./.aptitude +du -h --max-depth=1 
-   239M    ./income + 4,0K    ./.aptitude 
-   4,0K    ./.w3m + 239M    ./income 
-   4,0K    ./Mail + 4,0K    ./.w3m 
-   16K     ./test-gen-rsa + 4,0K    ./Mail 
-   16K     ./.ssh + 16K     ./test-gen-rsa 
-   60M     ./cea + 16K     ./.ssh 
-   776K    ./save_tiga + 776K    ./save_tiga 
-   307M    . + 307M    . 
 +</code>
  
 +[[https://dev.yorhel.nl/ncdu|ncdu]] est une alternative en ncurses (interface pseudo-graphique en CLI)
 =====echo===== =====echo=====
  
 ''echo'' permet d'afficher une ligne ''echo'' permet d'afficher une ligne
-  echo toto +<code bash> 
-   toto+echo toto 
 +toto 
 +</code>
  
 Options : Options :
   * ''-n'' : ne va pas à la ligne après le texte   * ''-n'' : ne va pas à la ligne après le texte
   * ''-e'' : interprète les caractères spéciaux du genre ''\n'' ou ''\t''   * ''-e'' : interprète les caractères spéciaux du genre ''\n'' ou ''\t''
-  echo -e "to\tto\ntiti" +<code bash> 
-   to      to +echo -e "to\tto\ntiti" 
-   titi +to      to 
 +titi 
 +</code>
  
 =====env===== =====env=====
Line 614: Line 761:
   ethtool -s eth0 speed 1000 duplex full autoneg on   ethtool -s eth0 speed 1000 duplex full autoneg on
  
 +Afficher les statistiques de la carte eth0: ''ethtool -S eth0''. Plus d'informations pour le diagnostique réseau ici : [[informatique:linux:reseau#diagnostique|Diagnostique réseau sous Linux]]
  
 =====exit===== =====exit=====
Line 662: Line 810:
   * ''-name nom'' permet de spécifier un nom de fichier ou un motif. Si motif, il est recommandé de le saisir entre "" ou d'échapper proprement les caractères interprétés (ex : ''-name \*.txt'' ou ''-name "*.txt"'') sous peine de rencontrer l'erreur suivante : //find: les chemins doivent précéder l'expression : <un fichier texte>//   * ''-name nom'' permet de spécifier un nom de fichier ou un motif. Si motif, il est recommandé de le saisir entre "" ou d'échapper proprement les caractères interprétés (ex : ''-name \*.txt'' ou ''-name "*.txt"'') sous peine de rencontrer l'erreur suivante : //find: les chemins doivent précéder l'expression : <un fichier texte>//
   * ''-perm 664'' permet de chercher les fichiers qui ont exactement les droits du masque (ici 664 soit ''<nowiki>-rw-rw-r--</nowiki>''). On peut rechercher tous les fichiers qui ont le droit d'écriture pour le groupe par ''-perm -020''.   * ''-perm 664'' permet de chercher les fichiers qui ont exactement les droits du masque (ici 664 soit ''<nowiki>-rw-rw-r--</nowiki>''). On peut rechercher tous les fichiers qui ont le droit d'écriture pour le groupe par ''-perm -020''.
 +  * ''-type f -executable'' permet d'afficher les fichiers exécutables. Fonctionne aussi avec ''-readable'' et ''-writable''.
   * ''-regex 'expr_reg''' permet d'utiliser une expression régulière comme critère de recherche   * ''-regex 'expr_reg''' permet d'utiliser une expression régulière comme critère de recherche
   * ''-exec'' permet d'exécuter une commande pour chaque résultat de la commande ''find'' (voir exemples)   * ''-exec'' permet d'exécuter une commande pour chaque résultat de la commande ''find'' (voir exemples)
Line 689: Line 838:
 # copier tous les fichiers ''.jpg'' dans /tmp ("-regex" permet de rechercher dans le path complet du fichier) # copier tous les fichiers ''.jpg'' dans /tmp ("-regex" permet de rechercher dans le path complet du fichier)
 find . -regex ".*\/([a-z]|[A-Z]|[0-9])+\.jpg$" -exec cp {} /tmp \; find . -regex ".*\/([a-z]|[A-Z]|[0-9])+\.jpg$" -exec cp {} /tmp \;
 +
 +# rechercher ses films de vacances et afficher leurs noms triés par ordre alphabétiques
 +# NB : le type posix-egrep permet d'utiliser des | dans le motif, ce qui n'est pas possible par défaut
 +find . -regextype posix-egrep -iregex '.*.avi|.*.mkv|.*.mp4|.*.m4v|.*.m2ts' | sed 's/.*\///g' | sort
  
 # supprimer toutes ces maudites miniatures Windows : # supprimer toutes ces maudites miniatures Windows :
Line 716: Line 869:
 # on peut additionner les conditions de recherches avec -a (AND) et -o (OR) # on peut additionner les conditions de recherches avec -a (AND) et -o (OR)
 find . \( -name '*.avi' -o -name '*.mkv' \) -print find . \( -name '*.avi' -o -name '*.mkv' \) -print
-</code> 
  
 +Pour trier les résultats par date de modification :
 +find . \( -name '*.avi' -o -name '*.mkv' \) -exec ls -rt {} \;
 +</code>
 =====flock===== =====flock=====
  
Line 806: Line 961:
   * ''--color=auto'' pour afficher en rouge le motif dans les résultats   * ''--color=auto'' pour afficher en rouge le motif dans les résultats
   * ''-q'' (**q**uiet) n'affiche rien, se contente de retourner le code d'erreur 0 s'il trouve le motif, 1 sinon   * ''-q'' (**q**uiet) n'affiche rien, se contente de retourner le code d'erreur 0 s'il trouve le motif, 1 sinon
 +  * ''-o'' (**o**nly-matching) : n'affiche que les résultats matchant le motif (et pas la ligne entière)
 +  * ''-f FILE'' : fournit à grep une liste de patterns listées une par ligne dans le fichier FILE
 +  * ''-H'' affiche le nom de fichier pour chaque ligne qui matche (option par défaut)
 +  * ''-h'' inverse de -H : supprime l'affichage des noms des fichiers
  
 Il est possible d'utiliser les expressions régulières dans le motif, par exemple : Il est possible d'utiliser les expressions régulières dans le motif, par exemple :
Line 897: Line 1056:
 =====history===== =====history=====
  
-Permet d'afficher l'historique des commandes saisies dans un terminal :+Permet d'afficher l'historique des commandes saisies lors de la session dans un terminal :
 <code bash> <code bash>
 history history
Line 907: Line 1066:
  69  history  69  history
 </code> </code>
 +
 +Lors de la fermeture de session, cette liste est ajoutée au fichier indiqué dans la variable ''$HISTFILE''. On peut contrôler :
 +  * le format de timestamp de chaque commande avec la variable ''HISTTIMEFORMAT'' (même format que la commande date)
 +  * la taille de l'historique, en nombre de ligne
 +    * ''HISTSIZE'' défini la taille de l'historique de la session courante (en mémoire)
 +    * ''HISTFILESIZE'' défini la taille du fichier d'historique (celui défini dans ''$HISTFILE'')
 +  * ''HISTCONTROL'' permet d'ignorer les doublons (ignoredups), les commandes précédées par un espace (ignorespace) ou les deux (ignoreboth)
 +Exemple :
 +<file bash .bashrc>
 +HISTCONTROL=ignoredups:ignorespace
 +HISTTIMEFORMAT="%Y%m%d_%H%M%S "
 +HISTSIZE=10000
 +HISTFILESIZE=20000
 +</file>
  
 On peut relancer une commande de l'historique en saisissant //!// suivi de son numéro : On peut relancer une commande de l'historique en saisissant //!// suivi de son numéro :
Line 929: Line 1102:
 </code> </code>
  
-On efface l'historique avec ''history -c''.+On efface l'historique de session : ''history -c'' ; forcer l'écriture du buffer dans le fichier ''history -a''.
  
 On peut loguer (dans ''/var/log/messages'') l'historique des commandes saisies par un utilisateur en ajoutant dans son .bashrc cette ligne : On peut loguer (dans ''/var/log/messages'') l'historique des commandes saisies par un utilisateur en ajoutant dans son .bashrc cette ligne :
Line 972: Line 1145:
  ymir  ymir
 </code> </code>
 +
 +=====iconv=====
 +
 +iconv est un utilitaire de conversion et d'encodage de texte.
 +<code bash>
 +# Supprimer les caractères accentués:
 +echo "éèï" | iconv -f utf8 -t ascii//TRANSLIT//IGNORE
 + eei
 +</code>
 +
  
 =====id===== =====id=====
Line 1099: Line 1282:
 =====ip===== =====ip=====
  
-Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau.+Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau. Dans de plus en plus de distributions, il semble supplanter les tradditionnels ifconfig, arp, route, etc...
 <code bash> <code bash>
 +# afficher les interfaces
 ip addr show ip addr show
  1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue  1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
Line 1112: Line 1296:
  3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000  3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
      link/ether 00:0b:cd:0a:ad:30 brd ff:ff:ff:ff:ff:ff      link/ether 00:0b:cd:0a:ad:30 brd ff:ff:ff:ff:ff:ff
 +
 +# afficher la table de routage
 +ip route
 +default via 10.10.22.249 dev ens3 onlink
 +10.10.22.0/24 dev ens3 proto kernel scope link src 10.10.22.65
 +
 +# affecter ou supprimer une adresse IP à une interface
 +ip addr add 10.0.0.1 255.255.255.0 dev eth0
 +ip addr del 10.0.0.1 255.255.255.0 dev eth0
 +
 +# afficher les voisins
 +ip neigh
 </code> </code>
  
 +Équivalence anciennes/nouvelles commandes:
 +^ anciennes commandes ^ équivalent ip ^
 +| ifconfig -a | ip a |
 +| ifconfig enp6s0 down | ip link set enp6s0 down |
 +| ifconfig enp6s0 up | ip link set enp6s0 up |
 +| ifconfig enp6s0 10.0.0.24 netmask 255.255.255.0 dev enp6s0 | ip addr add 10.0.0.24/24 dev enp6s0 |
 +| ifconfig enp6s0 mtu 9000 | ip link set enp6s0 mtu 9000 |
 +| ifconfig enp6s0:0 10.0.0.25 | ip addr add 10.0.0.25/24 dev enp6s0 |
 +| netstat | ss |
 +| netstat -tulpn | ss -tulpn |
 +| netstat -neopa | ss -neopa |
 +| netstat -g | ip maddr |
 +| route | ip r |
 +| route add -net 10.0.0.0 netmask 255.255.255.0 dev enp6s0 | ip route add 10.0.0.0/24 dev enp6s0 |
 +| route add default gw 10.0.0.254 | ip route add default via 10.0.0.254 |
 +| arp -a  | ip neigh |
 +| arp -v | ip -s neigh |
 +| arp -s 10.0.0.33 1:2:3:4:5:6 | ip neigh add 10.0.1.33 lladdr 1:2:3:4:5:6 dev enp6s0 |
 +| arp -i enp6s0 -d 10.0.0.254 | ip neigh del 10.0.0.254 dev wlp7s0 |
  
 =====ipcs===== =====ipcs=====
Line 1267: Line 1482:
 =====lastb===== =====lastb=====
  
-Comme ''last'', mais n'affiche que les mauvais logins. +**lastb** (last bad logins) affiche les derniers logins en échec (mauvais nom d'utilisateur ou mot de passe).
  
 +<code bash>
 +# lastb
 +toto     ssh:notty    10.0.57.26    Wed Jan  9 22:13 - 22:13  (00:00)
 +titi     ssh:notty    10.0.128.23   Mon Jan  7 09:38 - 09:38  (00:00)
 +toto     ssh:notty    10.0.57.26    Fri Jan  4 20:16 - 20:16  (00:00)
 +tata     ssh:notty    10.0.128.23   Thu Jan  3 09:11 - 09:11  (00:00)
 +tatoo    ssh:notty    10.0.128.23   Thu Jan  3 09:11 - 09:11  (00:00)
 +</code>
 =====lastlog===== =====lastlog=====
  
Line 1364: Line 1586:
   * ''-t'' (//time//) classe les résultats par date de dernière modification   * ''-t'' (//time//) classe les résultats par date de dernière modification
   * ''-r'' (//reverse//) inverse le classement des résultats   * ''-r'' (//reverse//) inverse le classement des résultats
 +  * ''-1'' (tiret un, et non tiret L) pour formater le résultat sur une seule colonne
  
 <code bash> <code bash>
Line 1439: Line 1662:
   * ''lsof -ni tcp:25'' liste les processus de type internet utilisant du TCP sur le port 25   * ''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   * ''lsof /dev/hda1'' liste les fichiers ouvert sur /dev/hda1
 +  * ''lsof -p 1102,1103'' liste les fichiers ouverts par les processus de PID 1102 ou 1103
  
 =====lspci===== =====lspci=====
Line 1619: Line 1842:
 =====netcat===== =====netcat=====
  
-Permet de créer des sockets comme client (''netcat mon_serveur.fr 200'') ou comme serveur (''netcat -l -p 80'') :+Netcat (nc) est un couteau-suisse réseau qui permet de créer 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 -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 > espionne.log'' Ecoute sur le port 23 (telnet) et enregistre dans espionne.log tout ce qui est tapé par le client.
Line 1626: Line 1849:
   * ''netcat -vv la_machine_a_scanner 1-100'' Permet de lancer un scan sur des machines distantes.   * ''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 aléatoirement les ports de 1 à 100 avec un time out. On évite la détection.   * ''netcat -vv -z -i 10000 -r 127.0.0.1 1-200'' Permet de scanner aléatoirement les ports de 1 à 100 avec un time out. On évite la détection.
 +
 +  * pour tester si des ports sont ouverts sur une machine distante:
 +<code bash>
 +# -z = on n'envoie pas de données
 +# -v = mode verbeux
 +# -t = TCP (-u pour UDP)
 +# 80: numéro de port à tester
 +$ nc -zvt 10.0.0.1 80
 +Connection to 10.0.0.1 80 port [tcp/ssh] succeeded!
 +
 +# On peut remplacer un port par une liste de port (séparés par des espaces : "80 443")
 +#   ou une plage de ports ("80-89")
 +# Par défaut on teste en TCP ; pour utiliser UDP, ajouter le paramètre -u
 +#   (ex ici pour tester le DNS et le SYSLOG) :
 +$ nc -zv 10.0.0.1 -u 53 514
 +</code>
  
   * Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket :   * Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket :
Line 1670: Line 1909:
   * ''netstat -s'' permet d'afficher les statistiques réseau de la machine (les compteurs IP, de connections TCP ou UDP)   * ''netstat -s'' permet d'afficher les statistiques réseau de la machine (les compteurs IP, de connections TCP ou UDP)
  
 +=====NetworkManager=====
 +
 +Utilitaire de configuration réseau utilisé par défaut sous Redhat/RockyLinux/feu CentOS.
 +
 +src: https://docs.rockylinux.org/fr/guides/network/basic_network_configuration/
 +<code bash>
 +# Etat du service
 +systemctl status NetworkManager
 +
 +# Editer fichier de conf
 +vim /etc/sysconfig/network-scripts/ifcfg-ens18
 +TYPE=Ethernet
 +PROXY_METHOD=none
 +BROWSER_ONLY=no
 +BOOTPROTO=none
 +DEFROUTE=yes
 +IPV4_FAILURE_FATAL=no
 +IPV6INIT=no
 +NAME=ens18
 +UUID=xxxx-xx
 +DEVICE=ens18
 +ONBOOT=yes
 +IPADDR=192.168.0.1
 +PREFIX=24
 +GATEWAY=192.168.0.254
 +DNS1=192.168.0.254
 +DNS2=1.1.1.1
 +IPV6_DISABLED=yes
 +
 +# Appliquer la conf réseau
 +nmcli connection up ens18
 +
 +# Vérifier bonne application de la conf :
 +nmcli device show ens18
 +ip a
 +ip route
 +</code>
 =====nslookup===== =====nslookup=====
  
 Permet d'interroger un serveur DNS afin d'obtenir des informations sur un domaine ou sur une machine : Permet d'interroger un serveur DNS afin d'obtenir des informations sur un domaine ou sur une machine :
-  nslookup google.fr +<code bash> 
-   Server:         127.0.0.1 +nslookup google.fr 
-   Address:        127.0.0.1#53 + 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 "désuet" ; ''dig'' le remplace et est plus complet.+ 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
  
 +# pour interroger un serveur (ici 10.1.1.24) en particulier :
 +nslookup google.fr 10.1.1.24
  
 +# utiliser nslookup en mode interactif
 +nslookup
 +> server 10.1.1.24
 +Default server: 10.1.1.24
 +Address: 10.1.1.24#53
 +> google.fr
 +Server: 10.1.1.24
 +Address: 10.1.1.24#53
 +
 +Non-authoritative answer:
 +Name: google.fr
 +Address: 216.58.209.227
 +</code>
 +
 +Cet outil est "désuet" car plus maintenu sous Linux (mais pas sous Windows) ; ''dig'' le remplace et est plus complet.
 +
 +
 +=====NTP=====
 +
 +NTP est le protocole de synchronisation d'horloge d'équipements informatique ; le démon NTPd permet à une machine Linux de se synchroniser régulièrement pour conserver une date/heure fiable sur le long terme.
 +
 +/etc/ntp.conf
 +<code bash>
 +# spécification des serveurs sur lesquels se synchroniser
 +pool 0.fr.pool.ntp.org iburst
 +pool 0.ch.pool.ntp.org iburst
 +pool 0.debian.pool.ntp.org iburst
 +pool 1.debian.pool.ntp.org iburst
 +pool 2.debian.pool.ntp.org iburst
 +pool 3.debian.pool.ntp.org iburst
 +
 +# si besoin, préciser les clients qui peuvent se synchroniser sur nous
 +restrict 127.0.0.1
 +restrict ::1
 +</code>
 +
 +Forcer la mise à jour de la date sur un serveur en particulier : ''ntpdate 1.2.3.4''
 +
 +Vérifier le bon fonctionnement :
 +<code bash>
 +ntpq -p
 +     remote           refid      st t when poll reach   delay   offset  jitter
 +==============================================================================
 + 0.fr.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 + 0.ch.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 + 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 + 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 + 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 + 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 +#ntp-2.arkena.ne 193.190.230.65   2 u   34   64  177   14.795   -2.333   0.212
 +-178.249.167.0 ( 195.66.241.2     2 u   30   64  177    9.682   -0.016   0.152
 +*eudyptula.init7 162.23.41.10     2 u   37   64  177   13.736   -0.070   0.152
 +-smtp1.xipalia.c 193.190.230.65   2 u   33   64  177    2.047   -0.552   0.292
 +-bart.nexellent. 194.242.34.149   2 u   41   64  177   19.428   -0.173   0.256
 +#pob01.aplu.fr   193.204.114.232  2 u   34   64  177    1.974   -2.490   0.213
 +#nsa.priv.pw     85.199.214.102   2 u   29   64  177    5.035   -1.964   0.192
 +#enterprise.frmu 241.73.83.127    3 u   33   64  177    5.173   -0.099   0.106
 +-tick.ntp.infoma .GPS.            1 u   25   64  177   15.019    0.280   0.182
 ++sunflower.spide 145.238.203.14   2 u   28   64  177    2.087   -0.193   0.200
 +-ip139.ip-5-196- 145.238.203.14   2 u   34   64  177    1.841    0.178   0.176
 ++cluster009.lino 193.190.230.66   2 u   24   64  177    1.967    0.308   0.187
 +#skarabrae.draxi 131.188.3.222    2 u   32   64  177   17.052   -2.525   0.231
 +-2001:41d0:b:816 124.216.164.14   2 u   32   64  177   10.852   -0.471   0.171
 ++2001:41d0:1:8da 193.190.230.66   2 u   29   64  177    2.073   -0.147   0.147
 +x78.192.0.158 (c .DCFa.           1 u   30   64  177    5.231   20.499   0.273
 +#eva.aplu.fr     37.187.106.108   3 u   27   64  177   15.125    0.178   0.114
 +#lotor.mcl.gg    237.17.204.95    2 u   30   64  177   20.259   -4.050   0.217
 +</code>
 =====passwd===== =====passwd=====
  
Line 1730: Line 2075:
   * ''ping -W'' (timeout) : permet de spécifier, en seconde, le temps d'attente maximum d'une réponse à un ping (si la machine d'en face met trop de temps à répondre). Par défaut, il vaut 2 RTTs.   * ''ping -W'' (timeout) : permet de spécifier, en seconde, le temps d'attente maximum d'une réponse à un ping (si la machine d'en face met trop de temps à répondre). Par défaut, il vaut 2 RTTs.
  
 +====fping====
  
 +[[https://fping.org|fping]] est une alternative à ping, ayant comme différence de pouvoir spécifier de multiples destinations à PINGer.
 +<code bash>
 +# va PINGer 5 fois (-c5) le réseau 10.1.2.200/29 (-g), soit de l'adresse 10.1.2.201 à 10.1.2.206,
 +# va faire une résolution DNS inversée des IPs (-n) et n'afficher que le résumé des 5 PINGs/adresse (-q).
 +fping -c5 -g 10.1.2.200/29 -nq
 +test201.local       : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.04/0.04/0.04
 +test202.local       : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.23/0.23/0.23
 +test203.local       : xmt/rcv/%loss = 1/0/100%
 +test204.local       : xmt/rcv/%loss = 1/0/100%
 +test205.local       : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.31/0.31/0.31
 +test206.local       : xmt/rcv/%loss = 1/0/100%
 +
 +# ici les IPs .203, .204 et .206 ne répondent pas
 +</code>
 =====pmap===== =====pmap=====
  
Line 1785: Line 2145:
 </code> </code>
  
 +=====printf=====
 +
 +Comme [[informatique:linux:commandes_linux#echo|echo]], **printf** permet d'afficher du texte mais de façon plus léchée. Le premier argument défini le formatage de l'affichage, puis on fournit les variables dans les arguments suivants.
 +<code bash>
 +a=12; b=34; c='toto'
 +printf 'a=%i, b=%i, c=%s\n' $a $b $c
 +a=12, b=34, c=toto
 +</code>
 +''%i'' désigne les variables entière (integer), pour les variables chaîne (strings).
 +
 +Pour formater l'affichage, on peut délimiter le nombre de colonne que prend chaque variable en suivant le "'%' par le nombre de colonne souhaité (et un ''-'' pour aligner à droite) :
 +<code bash>
 +a=12; b=34; c='toto'
 +# on aligne $a et $b à droite sur 5 colonnes, et $c à gauche sur 20 colonnes
 +printf 'a=%5i, b=%5i, c=%-20s\n' $a $b $c
 +a=   12, b=   34, c=toto
 +</code>
 +
 +====Afficher x fois le même caractère====
 +
 +Pour afficher 10 fois le caractère "=" :
 +<code bash>
 +printf '%.0s=' {1..10}
 +==========
 +</code>
  
 =====ps===== =====ps=====
Line 1809: Line 2194:
 </code> </code>
  
 +Afficher les processus les plus consommateurs de mémoire/de CPU :
 +<code bash>
 +ps -eo pmem,pcpu,pid,args --sort=-rss   | head
 +ps -eo pmem,pcpu,pid,args --sort=-stime | head
 +</code>
  
 =====pstree===== =====pstree=====
  
 **pstree** permet d'afficher l'arborescence, à la façon de tree pour les répertoires, des processus en cours d'exécution. **pstree** permet d'afficher l'arborescence, à la façon de tree pour les répertoires, des processus en cours d'exécution.
 +
 +=====pushd/popd/dirs=====
 +
 +**pushd**, **popd** et **dirs** sont des commandes spécifiques à bash ; elles permettent de contrôler une pile de noms de répertoires successifs, afin d'y revenir plus facilement (fonctionnement LIFO, Last In First Out) :
 +  * ''pushd <REPERTOIRE>'' permet de se rendre dans REPERTOIRE et de l'empiler
 +  * ''popd'' permet de revenir au dernier répertoire enregistré par pushd ; puis le dépile.
 +  * ''dirs'' permet de lister le contenu de la pile de répertoires
 +
 +Exemple d'utilisation :
 +<code bash>
 +# état initial : on est dans notre home
 +# et la pile est vide (elle ne contient que le répertoire courant)
 +$ pwd
 +/home/toto
 +$ dirs
 +~
 +
 +# on change de répertoire (et on l'empile)
 +$ pushd /tmp
 +/tmp ~
 +
 +# on change encore de répertoire (et on l'empile à nouveau)
 +$ pushd /var/log
 +/var/log /tmp ~
 +
 +# on retourne dans le précédent répertoire, et on le dépile
 +$ popd
 +/tmp ~
 +
 +# on retourne à la case départ
 +$ popd
 +~
 +</code>
 =====pwck===== =====pwck=====
  
 **pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/etc/passwd'' et ''/etc/shadow''. **pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/etc/passwd'' et ''/etc/shadow''.
 +
 +=====readarray=====
 +
 +Créer un tableau à partir d'un flux ou d'un fichier, d'une case par ligne.
 +<code bash>
 +readarray -t T_LINES < fichier.txt
 +
 +cat fichier.txt | readarray -t T_LINES
 +</code>
 +
  
 =====readlink===== =====readlink=====
Line 1825: Line 2258:
 </code> </code>
  
-Dans un script, pour n'afficher que son chemin absolu, utiliser ''dirname $(readlink -f $0)''.+C'est l'équivalent (en plus compatiblede la commande bash ''realpath''.
  
 +Dans un script, pour n'afficher que son chemin absolu, utiliser ''dirname $(readlink -f $0)'' (ou, en bash, ''dirname $(realpath $0)'' )
  
 =====reset===== =====reset=====
Line 1852: Line 2286:
   * Ajouter l'adresse de la passerelle (gw ou gateway cela dépend)   * Ajouter l'adresse de la passerelle (gw ou gateway cela dépend)
 <code bash> <code bash>
-route add default gw 192.168.0.1 netmask 255.255.255.0+route add default gw 192.168.0.1
 </code> </code>
  
Line 1876: Line 2310:
 <code bash> <code bash>
 echo "nameserver 193.252.19.3" >> /etc/resolv.conf echo "nameserver 193.252.19.3" >> /etc/resolv.conf
 +</code>
 +
 +Pour ajouter des routes persistantes, cela dépend de la distribution Linux utilisée. Par exemple pour créer une route pour le réseau 10.0.211.0/24 en passant par le next-hop 10.0.32.2, accessible via l'interface réseau eth0 :
 +  * __sous Redhat/centOS__ il faut créer ou éditer le fichier :
 +<code bash /etc/sysconfig/network-scripts/route-eth0>
 +10.0.211.0/24 via 10.0.32.2
 +</code>
 +  * sous Debian, il faut ajouter une ligne dans le fichier :
 +<code bash /etc/network/interfaces>
 +up route add -net 10.0.211.0/24 gw 10.0.32.2 dev eth0
 </code> </code>
  
Line 1906: Line 2350:
 =====sed===== =====sed=====
  
-**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles.+**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles. Sed peut travailler sur un flux (pipé derrière une autre commande) ou à partir d'un fichier : 
 +<code bash> 
 +# afficher le contenu du fichier en remplaçant toto par titi 
 +cat fichier.txt | sed 's/toto/titi'
  
-  * Filtre pour remplacer une IP par X.X.X.X+# même chose en plus simple 
 +sed 's/toto/titi' fichier.txt 
 +</code> 
 + 
 +Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d'enregistrer les modifications dans celui-ci, en ajoutant l'option ''-i'' :
 <code bash> <code bash>
-sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g"+# remplacer toto par titi dans le fichier (sans afficher le résultat) 
 +sed -i 's/toto/titi' fichier.txt 
 +# idemmais en sauvegardant le fichier original avec l'extension .bck 
 +# cela créra 2 fichiers : fichier.txt (modifiéet fichier.txt.bck (l'original) 
 +sed -i".bck's/toto/titi' fichier.txt
 </code> </code>
  
-  Convertir les minuscules en majuscules (ou inversement)+<WRAP center round important 60%> 
 +Les caractères suivants doivent être échappés (préfixés par un ''\'') car ils ont une signification spéciales : ''$.*[\^'' sauf s'il sont entre [...] ; en revanche les autres (lettres, chiffres et ''(){}+?|'') ne doivent pas être échappés pour représenter le caractère. 
 +</WRAP> 
 + 
 +  * Afficher la 3ème ligne d'un fichier (plusieurs méthodes
 +Afficher la 3ème ligne d'un fichier :
 <code bash> <code bash>
-echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt"sed 's/.*/\L&/+sed -n '3p' <fichier> 
-la phrase avec des lettres n'importe comment +sed '3!d'   <fichier> 
-# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules+sed '52q;d' <fichier>   # arrête la lecture dès qu'elle a matché, pour la performance 
 +</code> 
 + 
 +  Afficher un fichier à partir de la 3ème ligne : 
 +<code bash> 
 +sed -n '3,$p' <fichier> 
 +</code> 
 + 
 +  * Afficher les lignes de 2 à 5 d'un fichier ; alternative : afficher les lignes de 2 jusqu'à ce qu'une expression régulière matche (dans cet exemple : /sys/) 
 +<code bash> 
 +sed -n '2,5p' <fichier> 
 +sed -n '2,/sys/p<fichier>
 </code> </code>
  
Line 1926: Line 2397:
 (il s'agit d'un "un" i suivi du texte à insérer) (il s'agit d'un "un" i suivi du texte à insérer)
  
-  * Afficher la 3ème ligne d'un fichier (et sauvegarder le fichier source avec le suffixe ".bck":+  * Afficher les lignes sauf celles situées entre "toto" et "titi" :
 <code bash> <code bash>
-sed -i".bck" -n '3p<fichier>+sed '/toto/,/titi/d'
 </code> </code>
  
-  * Afficher les lignes de 2 à 5 d'un fichier ; alternative : afficher les lignes de 2 jusqu'à ce qu'une expression régulière matche (dans cet exemple /sys/) +  * Supprimer la 5eme ligne du fichier toto.txt 
-<code bash>sed -'2,5p<fichier></code> +<code bash> 
-<code bash>sed -'2,/sys/p' <fichier></code>+sed -i '5dtoto.txt 
 +</code> 
 + 
 +  * Supprimer les lignes contenant toto dans le fichier toto.txt 
 +<code bash>sed -'/toto/dtoto.txt</code> 
 + 
 +  * Supprimer les lignes __ne contenant pas__ toto dans le fichier toto.txt : 
 +<code bash>sed -'/toto/!dtoto.txt</code> 
 + 
 +  * Supprimer les lignes vides 
 +<code bash>sed '/^$/d' toto.txt</code>
  
   * supprimer (''d'') les première lignes du début d'un fichier (''0,'') jusqu'à un motif (''^begin'' dans cet exemple), et supprimer les dernières lignes depuis un motif (''/^end/'') jusqu'à la fin du fichier ('',$'') :   * supprimer (''d'') les première lignes du début d'un fichier (''0,'') jusqu'à un motif (''^begin'' dans cet exemple), et supprimer les dernières lignes depuis un motif (''/^end/'') jusqu'à la fin du fichier ('',$'') :
Line 1939: Line 2420:
 sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt
 </code> </code>
 +
 +  * Remplacer les adresses IP par X.X.X.X
 +<code bash>
 +sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g"
 +</code>
 +
 +  * Convertir les minuscules en majuscules (ou inversement)
 +<code bash>
 +echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | sed 's/.*/\L&/'
 +la phrase avec des lettres n'importe comment
 +# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules
 +</code>
 +(Le "&" représente le motif qui matche)
  
   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :
Line 1994: Line 2488:
 # va surligner titi en gris. # va surligner titi en gris.
 </code> </code>
 +
 +====Supprimer le formatage====
 +L'effet inverse du précédente filtre : permet de supprimer le formatage (l'emphase, la couleur du texte ou du background) :
 +<code bash>
 +ls --color=y | sed 's/\x1b\[[0-9;]*m//g'
 +</code>
 +
 +====Supprimer les lignes paires====
 +
 +<code bash>
 +sed '2~2d' file.txt
 +</code>
 +(en commençant à la ligne 2, puis toutes les 2 lignes (''2~2''), on supprime la ligne (''d''))
 +
 +Équivalent : en partant de la première ligne, puis toutes les 2 lignes (''1~2''), on n'affiche pas la ligne (''!p'')
 +<code bash>
 +sed -n '1~2!p' file.txt
 +</code>
 +
 +Autres équivalents :
 +<code bash>
 +sed -n '2~2p' file.txt
 +sed -n 'p;n'  file.txt
 +</code>
 +
 ====Liens utiles==== ====Liens utiles====
  
   * [[http://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii|Sed - Introduction à SED]] sur ccc   * [[http://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii|Sed - Introduction à SED]] sur ccc
   * [[https://openclassrooms.com/courses/la-commande-sed|la commande sed]] sur openclassrooms   * [[https://openclassrooms.com/courses/la-commande-sed|la commande sed]] sur openclassrooms
 +  * [[http://sed.sourceforge.net/sed1line_fr.html|Script d'une ligne utiles pour sed]]
 =====seq===== =====seq=====
  
Line 2097: Line 2617:
   * ''-k n'' trier selon la n-ième colonne. On peut faire suivre par d'autre paramètres (ex : ''-k2r'' pour trier selon la 2nde colonne en mode renverse)   * ''-k n'' trier selon la n-ième colonne. On peut faire suivre par d'autre paramètres (ex : ''-k2r'' pour trier selon la 2nde colonne en mode renverse)
   * ''-t'' précise le séparateur de colonne (par défaut un espace blanc)   * ''-t'' précise le séparateur de colonne (par défaut un espace blanc)
 +  * ''-V'' tri par numéro de version ; peut servir d'alternative à -n
 +  * ''-o <OUTPUT_FILE>'' copie le résultat dans un fichier plutôt que sur la sortie standard
  
 Exemple : Exemple :
Line 2130: Line 2652:
 =====ss===== =====ss=====
  
-**ss** est un outil pour afficher les statistiques des sockets (connexions réseau) qui ressemble pas mal à netstat.[[informatique:linux:commandes_linux#netstat|Commandes Linux]].+**ss** est un outil pour afficher les statistiques des sockets (connexions réseau) qui ressemble pas mal à [[informatique:linux:commandes_linux#netstat|netstat]].
  
 <code bash> <code bash>
Line 2145: Line 2667:
 FRAG      0                 0 FRAG      0                 0
 </code> </code>
 +
 +Options :
 +  * ''-n'' ne résout pas les numéros de port
 +  * ''-l'' affiche tous les ports en écoute
 +  * ''-o state FILTER'' filtrer sur l'état de la connexion TCP ; avec filter parmis : established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen, closing, all, connected, synchronized, bucket, et big
 +
 +Exemples :
 +<code bash>
 +# afficher toutes les connexions HTTP ouvertes
 +ss -o state established '( dport = :http or sport = :http )'
 +
 +# afficher toutes les connexions HTTP établies avec l'IP destination 10.0.0.1
 +ss dst 10.0.0.1:80
 +
 +# afficher les connexions dont le port destination est supérieur à 1024
 +ss dport \> 1024
 +</code>
 +=====stat=====
 +
 +Commande permettant d'afficher des informations sur un système de fichier ou juste un fichier.
 +
 +<code bash>
 +# Affichage des informations du fichier toto.txt
 +$ stat toto.txt
 +  Fichier : « toto.txt »
 +   Taille : 0           Blocs : 0          Blocs d'E/S : 1048576 fichier vide
 +Périphérique : 37h/55d  Inœud : 36311392    Liens : 1
 +Accès : (0644/-rw-r--r--)  UID : (1515/dude)   GID : ( 1515/     dsi)
 + Accès : 2018-08-30 17:16:35.295782414 +0200
 +Modif. : 2018-08-30 18:15:02.295782414 +0200
 +Changt : 2018-08-30 17:16:35.295782414 +0200
 +  Créé : -
 +</code>
 +
 +On peut filtrer le résultat par type d'information recherchée avec l'option ''-c'' ; par exemple :
 +<code bash>
 +#  N'afficher que la date de dernière modification du fichier (au format //human-readable//) : ''%y''
 +$ stat -c "%y" toto.txt
 +2018-08-30 18:15:02.295782414 +0200
 +
 +# Afficher la taille du fichier (ici il est vide)
 +$ stat -c "%s" toto.txt
 +0
 +</code>
 +
 =====strings===== =====strings=====
  
 Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte).
-  strings toto.exe +<code bash> 
 +strings toto.exe 
 +</code>
  
 =====su===== =====su=====
Line 2198: Line 2766:
 =====tar===== =====tar=====
  
-Un outil d'archivage de données qui permet de créer une archive à partir de fichiers/arborescence. +Un outil d'archivage de données qui permet de créer une archive à partir de fichiers/arborescence. On peut utiliser le flag ''-v'' (verbose) pour afficher les fichiers/dossier ajoutés à l'archive.
-par exemple on veut archiver le répertoire ./toto/ et tout son contenu (répertoires et fichiers normaux). +
-  tar cvf toto.tar ./toto +
-(//toto.tar// désigne le nom de l'archive qu'on veut créer, il doit avoir l'extension ''.tar'')+
  
-On peut archiver ET compresser le fichier grâce à gunzip (option ''z'': +<code bash> 
-  tar czvf toto.tar.gz ./toto+# pour archiver le répertoire ./toto/ et tout son contenu (répertoires et fichiers normaux). 
 +# (toto.tar désigne le nom de l'archive qu'on veut créer, il doit avoir l'extension ''.tar''
 +tar cf toto.tar ./toto
  
-Plus tar__d__, pour le désarchiver : +# archiver ET compresser le fichier grâce à gunzip (-z) ou bunzip (-y) : 
-  tar zxf toto.tar+# -c pour compresser-v pour un affichage verbeux, -f pour préciser le fichier de sortie 
 +tar cvzf toto.tar.gz ./toto
  
 +# extraire (-x) le contenu d'une archive gunzip (-z) :
 +tar zxf toto.tar
 +
 +# exclure le répertoire "dir" et le fichier titi.txt de l'archive
 +tar cfz toto.tar --exclude=./toto/titi.txt --exclude=./toto/dir ./toto
 +
 +# équivalent en listant les fichiers à exclure dans un fichier externe
 +cat exclude-fic.txt
 +./toto/titi.txt
 +./toto/dir
 +
 +tar cfz toto.tar --exclude-from exclude-fic.txt ./toto
 +</code>
 +
 +=====tee=====
 +
 +Permet de copier l'entrée standard dans un fichier en plus de l'afficher sur la sortie standard. L'option ''-a'' permet d'ajouter à la fin du fichier indiqué.
 +<code bash>
 +$ echo toto | tee fic.log
 +toto
 +
 +$ echo titi | tee -a fic.log
 +titi
 +
 +$ cat fic.log
 +toto
 +titi
 +</code>
  
 =====telnet===== =====telnet=====
Line 2217: Line 2813:
 Le port (ici 80) est facultatif (par défaut 23). Le port (ici 80) est facultatif (par défaut 23).
  
 +====Envoi d'un mail====
 +
 +Pour envoyer un mail en SMTP via l'outil telnet :
 +<code bash>
 +# lancer l'invite telnet
 +$ telnet
 +
 +telnet> open 10.1.1.55 25
 +Trying 10.1.1.55...
 +Connected to 10.1.1.55.
 +Escape character is '^]'.
 +220 exemple.fr ESMTP Server Ready. Tue, 9 Apr 2019 14:39:14 +0200
 +
 +EHLO toto
 +250-exemple.fr Hello client.exemple.fr [10.1.2.201], pleased to meet you
 +250-ENHANCEDSTATUSCODES
 +250-PIPELINING
 +250-EXPN
 +250-VERB
 +250-8BITMIME
 +250-SIZE 25000000
 +250-DSN
 +250-ETRN
 +250-DELIVERBY
 +250 HELP
 +
 +MAIL from:toto@exemple.fr
 +250 2.1.0 toto@exemple.fr... Sender ok
 +
 +RCPT to:dest@domaine.fr notify=success,failure
 +250 2.1.5 dest@domaine.fr... Recipient ok
 +
 +DATA
 +354 Enter mail, end with "." on a line by itself
 +
 +Subject: Test de mail
 +Ceci est un test de msg
 +.
 +250 2.0.0 x39CdEPw012136 Message accepted for delivery
 +
 +QUIT
 +221 2.0.0 exemple.fr closing connection
 +Connection closed by foreign host.
 +</code>
 +
 +Pour fermer une connexion telnet qui ne répond plus ou dont on n'arrive plus à sortir, il faut utiliser la séquence d'échappement suivante : ''^]'' (''Ctrl + ]'').
  
 =====time===== =====time=====
  
 Permet de calculer le temps d'exécution d'une commande : Permet de calculer le temps d'exécution d'une commande :
-  time sleep 3 +<code bash> 
-   +time sleep 3 
-   real    0m3.015s + real    0m3.015s 
-   user    0m0.000s + user    0m0.000s 
-   sys     0m0.000s+ sys     0m0.000s 
 +</code>
  
 La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//).
  
 +Pour mesurer le temps de plusieurs commandes pipées (chainées avec un pipe ''|''), utiliser plutôt la formulation :
 +<code bash>
 +time -f "%es" bash -c "ls | wc"
 +</code>
 +
 +
 +=====timeout=====
 +
 +**timeout** permet de lancer une commande et de la killer si elle n'est pas terminée dans le laps de temps indiqué. Syntaxe : ''timeout <durée> <commande>'', avec durée un chiffre dont on peut préciser l'unité (**s**/seconde par défaut, ou **m**/**h**/**d** (minute/heure/jour).
 +
 +<code bash>
 +timeout 10s ping google.fr
 +</code>
  
 =====top===== =====top=====
Line 2251: Line 2907:
 </code> </code>
 =====traceroute===== =====traceroute=====
-[[http://fr.wikipedia.org/wiki/Traceroute|Traceroute]] permet de déterminer 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 incrémentant le TTL jusqu'à atteindre la destination on obtient les IPs de tous les routeurs intermédiaires. 
  
-Certains routeurs ne communiquent pas d'informations et affichent %%???%% ou %%* * *%%.+[[http://fr.wikipedia.org/wiki/Traceroute|Traceroute]] permet de déterminer la route prise par un paquet pour atteindre une adresse IP cible. 
 +L'outil envoie un paquet à ''IP'' avec un TTL de 1. Le paquet n'ira pas plus loin que le premier routeur qui enverra un paquet ''ICMP TTL Exceeded'' avec sa propre adresse IP. En incrémentant le TTL ainsi de suite jusqu'à atteindre la destination, on obtient les IPs de tous les routeurs intermédiaires. 
 + 
 +Certains routeurs ne communiquent pas d'information et affichent %%???%% ou %%* * *%%.
 <code bash> <code bash>
 traceroute google.fr traceroute google.fr
Line 2273: Line 2930:
 </code> </code>
  
 +Par défaut le protocole UDP/33434-5 est utilisé mais il peut être filtré. On peut donc demander au traceroute de changer de port (''-p 53'' par ex.), d'utiliser de l'ICMP (''-I'') ou du TCP (''-T'').
  
 +=====trap=====
 +
 +**trap** permet d'exécuter une commande lorsqu'il rencontre un signal.
 +  * ''-l'' permet de lister les signaux et leurs numéros associés
 +<code bash>
 + 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 + 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
 +11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
 +16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
 +21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
 +26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
 +31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
 +38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
 +43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
 +48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
 +53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
 +58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
 +63) SIGRTMAX-1  64) SIGRTMAX
 +</code>
 +Le code ''0'', non listé ci-dessus, correspond à un EXIT.
 +  * ''-p'' permet d'afficher les commandes associées à chaque signal
 +
 +Par exemple, pour afficher un message lors d'une erreur provoquant un EXIT, ainsi que la ligne qui la génère :
 +<code bash>
 +trap "echo Erreur à la ligne $LINENO" 0
 +</code>
 +
 +C'est utile pour effacer les fichiers temporaires en cas d'erreur interrompant le script par exemple :
 +<code bash>
 +trap "rm -f $TMPFIC1 $TMPFIC2 $TMPFIC3" 0 2 15
 +</code>
 =====type===== =====type=====
  
-**type** est une commande interne de bash qui indique comment chaque nom doit être interprété si on l'utilise en nom de commande.+**type** est une commande interne de bash qui permet de savoir à quoi correspond un "nomsi on l'utilise en tant que commande. Utilisée avec l'option ''-t'', il permet de savoir si la commande est un alias, une fonction, une commande externe (//file//) ou une fonction interne (une primitive) du shell (//builtin//). Utilisée sans option ou avec l'option ''-a'', **type** affiche le type et le contenu de la commande en paramètre.
  
-  * ''-a'' : affiche tous les emplacements de l'exécutable en paramètre (les alias et les fonctions) et son code source 
 <code bash> <code bash>
-# lister toutes les fonctions +type -t ls 
-declare -F + builtin 
-[..] + 
-declare -f titreterm+type -t l 
 + alias 
 + 
 +type l 
 + l is aliased to 'ls -p --color' 
 + 
 +type -t ssh 
 + file 
 +type ssh 
 + ssh is hashed (/usr/bin/ssh)
  
-# afficher le code de celle-ci (équivalent de "declare -f titreterm") 
 type -a titreterm type -a titreterm
-titreterm est une fonction + titreterm is a function 
-titreterm ()  + titreterm () 
-+ {
     if [[ $# -eq 1 && -n $1 ]]; then     if [[ $# -eq 1 && -n $1 ]]; then
         echo -ne "\033]0;$1\007";         echo -ne "\033]0;$1\007";
     fi     fi
-}+ }
 </code> </code>
 +
 +Voir aussi : [[informatique:linux:commandes_linux#declare|declare]].
  
 =====update-rc.d===== =====update-rc.d=====
Line 2402: Line 3100:
 =====vi===== =====vi=====
  
-Un éditeur de texte en mode texte plus ou moins fourni par défaut avec les distributions actuelles.+Vi (abréviation de **vi**sual) est un éditeur de texte en mode console présent par défaut sur la plupart des distributions Linux (d'où l'intérêt de la maîtriser). Il existe différentes versions plus ou moins légères (vi, vim.basic, vim.tiny, gvim, etc) ; [[informatique:logiciels:vim|plus d'info ici]].
  
  
-=====vipw=====+=====vi*=====
  
-C'est la commande à utiliser pour éditeravec vile fichier ''/etc/passwd'' (il met les verrous qui vont bien pour éviter des conflits d'accès).+Composés du préfixe **vi** (comme d'éditeur de texte) suivi de la commande à configurer**vipw****vigr** ou **visudo** sont des "mots-valise" permettant d'éditer proprement des parties critiques d'un système Linux. 
 +  * ''vipw'' pour éditer les utilisateurs (fichier /etc/passwd
 +  * ''vigr'' pour éditer les groupes (fichier /etc/group) 
 +  * ''visudo'' pour éditer la configuration de la commande ''sudo'' (fichier /etc/sudoers)
  
 +Leur utilisation est vivement recommandée dans la mesure où, souvent, leur action ne se limite pas à l'édition du fichier de conf mais permet également :
 +  * de mettre à jour d'autres fichiers liés, comme dans le cas de **vipw** ou **vigr** (pour MAJ respectivement /etc/shadow et /etc/gshadow)
 +  * de vérifier la syntaxe pour ne pas bloquer le système en cas d'erreur (**visudo** par exemple)
  
 +L'éditeur de texte lancé est celui renseigné dans la variable d'environnement $VISUAL, sinon celui de $EDITOR ; et seulement si aucun n'est spécifié, **vi** sera utilisé par défaut.
 +
 +Au passage, pour configurer l'éditeur de texte par défaut, il existe plusieurs manières :
 +  * **update-alternatives --config editor** sous Debian
 +  * **select-editor** (utilise la variable $SELECTED_EDITOR, préemptée par $VISUAL et $EDITOR)
 +  * éditer le fichier ~/.bashrc pour y ajouter l'une des lignes suivantes :
 +<code bash>
 +export VISUAL=vi
 +export EDITOR=vi
 +</code>
 =====vmstat===== =====vmstat=====
  
Line 2455: Line 3169:
  
 Est un utilitaire qui permet d'afficher (respectivement) le nombre de lignes, mots, et caractères (en fait il s'agit du nombre d'octets) du fichier : Est un utilitaire qui permet d'afficher (respectivement) le nombre de lignes, mots, et caractères (en fait il s'agit du nombre d'octets) du fichier :
-  wc /etc/passwd           +<code bash> 
-    32   39 1380 /etc/passwd+wc /etc/passwd           
 + 32   39 1380 /etc/passwd 
 +</code>
  
 On peut ne sélectionner que certaines colonnes de la sortie, en n'affichant que les **l**ignes (''-l''), les mots (''-w''), les octets (''-c''). On peut ne sélectionner que certaines colonnes de la sortie, en n'affichant que les **l**ignes (''-l''), les mots (''-w''), les octets (''-c'').
  
  
 +=====wget=====
 +
 +wget est un outil permettant de récupérer des pages web en CLI.
 +
 +<code bash>
 +wget http://www.exemple.com
 +</code>
 +
 +Pour utiliser un proxy : ajouter les lignes suivantes au fichier ''~/.wgetrc'' :
 +<code bash>
 +use_proxy=yes
 +http_proxy=10.0.0.1:8080
 +https_proxy=10.0.0.2:8043
 +</code>
 +
 +... ou utiliser, en CLI :
 +<code bash>
 +wget -e use_proxy=yes -e http_proxy=10.0.0.1:8080 http://www.exemple.com
 +wget -e use_proxy=yes -e https_proxy=10.0.0.2:8043 https://www.exemple.com
 +</code>
 =====whatis===== =====whatis=====
  
Line 2488: Line 3224:
  
 Affiche les utilisateurs connectés à la machine, et depuis quand. Affiche les utilisateurs connectés à la machine, et depuis quand.
-  who +<code bash> 
-   root     pts/       Jun  9 10:15 (10.0.0.20) +who 
- + root     pts/       Jun  9 10:15 (10.0.0.20) 
-Permet aussi d'afficher le runlevel précédent et courant (comme la commande ''runlevel'': + dude     pts/       2021-04-07 08:12 (10.0.16.1
-  who -+ toto     pts/       2021-03-02 14:32 (10.0.0.1)
-         run-level 3  May 31 11:36                   last=S+
  
 +# afficher le runlevel précédent et courant (comme la commande ''runlevel'') :
 +who -r
 + run-level 3  May 31 11:36                   last=S
  
 +# afficher uniquement l'utilisateur courant
 +who -m
 + dude     pts/       2021-04-07 08:12 (10.0.16.1)
 +</code>
 =====xargs===== =====xargs=====
  
Line 2508: Line 3250:
 permet de récupérer le pid de //serveur.php// pour envoyer lui envoyer un //SIGTERM// ; car ''kill'' ne lit pas son entrée standart ; il est donc impossible de le "piper" (''|'') avec d'autres commandes. permet de récupérer le pid de //serveur.php// pour envoyer lui envoyer un //SIGTERM// ; car ''kill'' ne lit pas son entrée standart ; il est donc impossible de le "piper" (''|'') avec d'autres commandes.
  
 +Autre use case, en utilisant les paramètres ''-L'' pour limiter le nombre de paramètre en entrée et ''-P'' pour lancer les commandes en parallèle:
 +<code bash>
 +echo -ne '1\n2\n3\n4' > toto
 +cat toto | xargs -L3 -P2 echo
 +1 2 3
 +4
 +</code>
 +C'est utile pour des opérations plus CPUvore comme le calcul de hash MD5 par ex:
 +<code bash>
 +ls
 +tata  toto
  
 +find . -maxdepth 1 -type f -print0 | xargs -L1 -P4 -0 md5sum >> md5sums
 +
 +cat md5sums
 +b4af4c692f2a8c7dda9abc8ee657997d  ./tata
 +257cde944bf50d4fe05001bc33dd0ca4  ./toto
 +e5084550439c3c39e1b0e53b47018058  ./md5sums
 +</code>
 +=====yum=====
 +
 +<code bash>
 +# lister les fichiers installés par un package :
 +# (cette cmd est installée par le package yum-utils)
 +repoquery -l package
 +
 +# activer tous les repos pour une recherche :
 +yum --enablerepo=* search pdsh
 +
 +# installer un rpm local :
 +yum localinstall pdsh-rcmd-rsh-2.31-1.el7.x86_64.rpm pdsh-rcmd-ssh-2.31-1.el7.x86_64.rpm pdsh-2.31-1.el7.x86_64.rpm
 +</code>
 ===== Liens externes ===== ===== Liens externes =====
  
   * http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-reseau.html   * http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-reseau.html
   * http://www.linux-france.org/prj/inetdoc/securite/   * http://www.linux-france.org/prj/inetdoc/securite/
informatique/linux/commandes_linux.1506585288.txt.gz · Last modified: 2017/09/28 07:54 by pteu