12.6. Commandes de communications

Certaines des commandes suivantes trouvent leur utilité dans la chasse aux spammers, ainsi que dans les transferts réseaux et les analyses de données.

Informations et statistiques

host

Recherche de l'information à propos d'un hôte suivant son nom ou son adresse IP en utilisant DNS.

bash$ host surfacemail.com
surfacemail.com. has address 202.92.42.236
	      

ipcalc

Envoie des requêtes pour des adresses IP. Avec l'option -h, ipcalc fait une recherche DNS inversée, trouvant le nom de l'hôte (serveur) à partir de l'adresse IP.

bash$ ipcalc -h 202.92.42.236
HOSTNAME=surfacemail.com
	      

nslookup

Lance une << recherche sur un serveur de noms >> par l'adresse IP d'un hôte. Ceci est l'équivalent de ipcalc -h ou dig -x. La commande peut être lancé interactivement ou pas, donc elle est utilisable dans un script.

La commande nslookup est << obsolète >>, mais elle a toujours son utilité.

bash$ nslookup -sil 66.97.104.180
nslookup kuhleersparnis.ch
 Server:         135.116.137.2
 Address:        135.116.137.2#53

 Non-authoritative answer:
 Name:   kuhleersparnis.ch
	      

dig

Similaire à nslookup, fait une << recherche Internet par un serveur de noms >> sur un hôte. Peut être lancé interactivement ou non, donc il est utilisable à partir d'un script.

Comparez la sortie de dig -x avec ipcalc -h et nslookup.

bash$ dig -x 81.9.6.2
;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 11649
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

 ;; QUESTION SECTION:
 ;2.6.9.81.in-addr.arpa.         IN      PTR

 ;; AUTHORITY SECTION:
 6.9.81.in-addr.arpa.    3600    IN      SOA     ns.eltel.net. noc.eltel.net.
 2002031705 900 600 86400 3600

 ;; Query time: 537 msec
 ;; SERVER: 135.116.137.2#53(135.116.137.2)
 ;; WHEN: Wed Jun 26 08:35:24 2002
 ;; MSG SIZE  rcvd: 91
	      

traceroute

Trace la route prise par les paquets envoyés à un hôte distant. Cette commande fonctionne à l'intérieur d'un LAN, WAN ou sur Internet. L'hôte distant peut être indiqué par son adresse IP. La sortie de cette commande peut être filtrée par grep ou sed via un tube.

bash$ traceroute 81.9.6.2
traceroute to 81.9.6.2 (81.9.6.2), 30 hops max, 38 byte packets
 1  tc43.xjbnnbrb.com (136.30.178.8)  191.303 ms  179.400 ms  179.767 ms
 2  or0.xjbnnbrb.com (136.30.178.1)  179.536 ms  179.534 ms  169.685 ms
 3  192.168.11.101 (192.168.11.101)  189.471 ms  189.556 ms *
 ...
	      

ping

Envoie un paquet << ICMP ECHO_REQUEST >> aux autres machines, soit sur un réseau local soit sur un réseau distant. C'est un outil de diagnostic pour tester des connections réseaux, et il devrait être utiliser avec précaution.

Un ping à succès renvoie un code de sortie de 0. Ceci peut être testé dans un script.

bash$ ping localhost
PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
 Warning: time of day goes back, taking countermeasures.
 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=709 usec
 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=255 time=286 usec

 --- localhost.localdomain ping statistics ---
 2 packets transmitted, 2 packets received, 0% packet loss
 round-trip min/avg/max/mdev = 0.286/0.497/0.709/0.212 ms
	      

whois

Réalise une recherche DNS (Domain Name System, système de nom de domaine). L'option -h permet de spécifier sur quel serveur whois envoyer la requête. Voir Exemple 4-6.

finger

Retrouve de l'information sur les utilisateurs d'un réseau. Optionnellement, cette commande peut afficher les fichiers ~/.plan, ~/.project et ~/.forward d'un utilisateur, si un des fichiers est présent.

bash$ finger
Login  Name           Tty      Idle  Login Time   Office     Office Phone
 bozo   Bozo Bozeman   tty1        8  Jun 25 16:59
 bozo   Bozo Bozeman   ttyp0          Jun 25 16:59
 bozo   Bozo Bozeman   ttyp1          Jun 25 17:07



bash$ finger bozo
Login: bozo                             Name: Bozo Bozeman
 Directory: /home/bozo                   Shell: /bin/bash
 On since Fri Aug 31 20:13 (MST) on tty1    1 hour 38 minutes idle
 On since Fri Aug 31 20:13 (MST) on pts/0   12 seconds idle
 On since Fri Aug 31 20:13 (MST) on pts/1
 On since Fri Aug 31 20:31 (MST) on pts/2   1 hour 16 minutes idle
 No mail.
 No Plan.
	      

En plus de raisons de sécurité, un grand nombre de réseaux désactive finger et son démon associaté. [1]

vrfy

Vérifie une adresse Internet de courrier électronique.

Accès à un hôte distant

sx, rx

L'ensemble de commandes sx et rx sert à transférer des fichiers de et vers un hôte distant en utilisant le protocole xmodem. Ils font généralement partie d'un paquetage de communications, tel que minicom.

sz, rz

L'ensemble de commandes sz et rz sert à transférer des fichiers de et vers un hôte distant en utilisant le protocole zmodem. Zmodem a certains avantages sur xmodem, tels qu'un meilleur taux de transmission et une récupération des transferts interrompus. Comme sx et rx, ils font généralement partie d'un paquetage de communications.

ftp

Utilitaire et protocole pour envoyer / recevoir des fichiers vers / de un hôte distant. Une session ftp peut être automatisée avec un script (voir Exemple 17-7, Exemple A-5 et Exemple A-14).

cu

Call Up (NdT: appelle) un système distant et se connecte comme simple terminal. C'est une sorte de version stupide de telnet.

uucp

Copie Unix vers Unix (UNIX to UNIX copy). C'est un paquetage de communication pour transférer des fichiers entre des serveurs UNIX. Un script shell est un moyen efficace de gérer une séquence de commandes uucp.

Depuis l'avenu d'Internet et du courrier électronique, uucp semble avoir disparu, mais il existe toujours et reste parfaitement utilisable dans des situations où des connexions Internet ne sont pas disponibles ou appropriées.

telnet

Utilitaire et protocole pour se connecter à un hôte distant.

Attention

Le protocole telnet contient des failles de sécurité et devrait donc être évité.

wget

L'utilitaire wget recupère de façon non-interactive ou télécharge des fichiers à partir d'un site Web ou d'un site ftp. Il fonctionne bien dans un script.
wget -p http://www.xyz23.com/file01.html
wget -r ftp://ftp.xyz24.net/~bozo/project_files/ -o $SAVEFILE

lynx

Le navigateur web lynx peut être utilisé dans un script (avec l'option -dump) pour récupérer un fichier d'un site web ou ftp de façon non
lynx -dump http://www.xyz23.com/file01.html >$FICHIER

rlogin

Connexion distante, initie une session sur un hôte distant. Cette commande a des failles de sécurité, donc utilisez à la place ssh.

rsh

Shell distant, exécute des commande(s) sur un hôte distant. Il a aussi des failles de sécurité, donc utilisez à la place ssh.

rcp

Copie distante, copie des fichiers entre deux machines différentes. Utiliser rcp et les outils similaires a des implications en terme de sécurité. Il n'est pas conseillé de l'utiliser dans un script shell. Utilisez plutôt ssh ou un script expect.

ssh

Shell sécurisé, pour se connecter sur un hôte distant et y exécuter des commandes. Ce remplacement sécurisé pour telnet, rlogin, rcp et rsh utilise authentification et cryptage. Voir sa page man pour plus de détails.

Réseaux locaux

write

C'est un utilitaire pour la communication terminal à terminal. Il permet d'envoyer des lignes à partir de votre terminal (console ou xterm) à un autre utilisateur. La commande mesg pourrait, bien sûr, être utilisée pour désactiver l'accès en écriture au terminal.

Comme write est interactif, il a peu de chances de prouver son utilité dans un script.

Mail

mail

Envoie ou lit des courriers électroniques.

Ce mail client en ligne de commande et très simpliste fonctionne bien comme commande embarquée dans un script.

Exemple 12-31. Un script qui s'envoie un courrier

#!/bin/sh
# self-mailer.sh: Script vous envoyant un mail.

adr=${1:-`whoami`}     # Par défaut, l'utilisateur courant, si non spécifié.
#  Tapez 'self-mailer.sh wiseguy@superdupergenius.com'
#+ envoie ce script à cette adresse.
#  Tapez juste 'self-mailer.sh' (sans argument) envoie le script à la personne
#+ l'ayant appelé, par exemple bozo@localhost.localdomain.
#
#  Pour plus d'informations sur la construction ${parameter:-default},
#+ voir la section "Substitution de paramètres" du chapitre "Variables
#+ Revisitées."

# ============================================================================
  cat $0 | mail -s "Le script \"`basename $0`\" s'est envoyé lui-même à vous." "$adr"
# ============================================================================

# --------------------------------------------
#  Bonjour du script qui s'envoie par mail.
#  Une personne mal intentionnée a lancé ce script, ce qui a fait que ce mail
#+ vous a été envoyé.
#  Apparemment, certaines personnes n'ont rien de mieux à faire de leur temps.
# --------------------------------------------

echo "Le `date`, le script \"`basename $0`\" vous a été envoyé par mail sur "$adr"."

exit 0
mailto

Similaire à la commande mail, mailto envoie des emails à partir de la ligne de commande ou dans un script. Néanmoins, mailto permet aussi d'envoyer des messages MIME (multimedia).

vacation

Cet utilitaire répond automatiquement aux courriers électroniques que le destinataire est en vacances et temporairement indisponible. Ceci tourne sur le réseau, en conjonction avec sendmail, et n'est pas applicable à un compte POP.

Notes

[1]

Un démon est un processus en tâche de fond non attaché à une session terminal. Les démons réalisent des services désignés soit à des moments précis soit en étant enclenchés par certains événements.

Le mot << démon >> signifie fantôme en grec, et il y a certainement quelque chose de mystérieux, pratiquement surnaturel, sur la façon dont les démons UNIX travaillent silencieusement derrière la scène, réalisant leur différentes tâches.

gzip, ln, patch, tar, tr, bc, xargs. The texinfo documentation on bash, dd, m4, gawk, and sed.

ALIGN="left" VALIGN="top" >PrécédentSommaireSuivantConstructeurs de listesNiveau supérieurFichiers