Exile on Keyboard St.

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

lundi 22 août 2016

Shell: Les résultats de ping avec un timestamp

La commande ping qui permet de tester la présence d'une machine envoie une requête par seconde et écrit sur la sortie standard quelque chose comme:

ping Freebox-Server.local
PING Freebox-Server.local (192.168.0.254) 56(84) bytes of data.
64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=1 ttl=64 time=4.23 ms
64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=2 ttl=64 time=3.31 ms
64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=3 ttl=64 time=3.36 ms
64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=4 ttl=64 time=3.32 ms

On peut modifier cet intervalle d'une seconde:

ping -i 60 Freebox-Server.local

Par contre on ne dispose pas de la date et de l'heure de chaque requête sur la sortie à l'écran.

Certes on peut utiliser le flag -D pour afficher le timestamp Unix:

ping -D -i 60 Freebox-Server.local
PING Freebox-Server.local (192.168.0.254) 56(84) bytes of data.
[1471846085.423179] 64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=1 ttl=64 time=3.65 ms
[1471846145.587672] 64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=2 ttl=64 time=3.40 ms

Mais ce n'est pas très parlant pour un être humain !

On pourrait certes obtenir ensuite la date par:

date -d @1471846085
lundi 22 août 2016, 08:08:05 (UTC+0200)

Mais cela ne simplifie pas les choses.

En fait, pour obtenir le timestamp sur la sortie de la commande ping, il ne faut pas se focaliser sur la commande ping elle-même mais il suffit de parser sa sortie. Par exemple:

ping Freebox-Server.local | while read line; do echo "$(date): $line"; done
lundi 22 août 2016, 08:11:21 (UTC+0200): PING Freebox-Server.local (192.168.0.254) 56(84) bytes of data.
lundi 22 août 2016, 08:11:21 (UTC+0200): 64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=1 ttl=64 time=3.30 ms
lundi 22 août 2016, 08:11:22 (UTC+0200): 64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=2 ttl=64 time=3.39 ms
lundi 22 août 2016, 08:11:23 (UTC+0200): 64 bytes from Freebox-Server.local (192.168.0.254): icmp_req=3 ttl=64 time=3.32 ms

En faisant comme cela, on peut ajouter les informations de date et d'heure sur la sortie de n'importe quelle commande et ce simplement par quelques commandes Shell.

vendredi 12 août 2016

Linux: Interroger les resolveurs DNS avec dig

Quand la résolution DNS commence à être lente sur une machine il est parfois utile de résoudre quelques adresses manuellement pour comprendre ce qu'il se passe.

Sous Linux la commande de prédilection est dig et se trouve dans le paquet dnsutils. On a souvent l'habitude d'utiliser pour résoudre une adresse la commande nslookup mais dig est plus commode. Entre parenthèses, il est à noter que ces deux dernières commandes sont installées par le même paquet: dnsutils.

Pour résoudre l'adresse www.fsf.org et donc connaître son adresse IP:

dig www.fsf.org

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> www.fsf.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57722
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.fsf.org.                   IN      A

;; ANSWER SECTION:
www.fsf.org.            1797    IN      A       208.118.235.174

;; Query time: 3 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)
;; WHEN: Mon Aug  8 08:12:49 2016
;; MSG SIZE  rcvd: 45

De façon plus concise:

dig www.fsf.org +short
208.118.235.174

Sur la première requête on voit l'adresse IP du serveur DNS qui nous a répondu: 192.168.0.254. Il s'agit de la Freebox server.

Maintenant si l'on veut interroger un autre serveur DNS, par exemple un de ceux fournis par l'association FDN, on procédera comme ceci:

dig @80.67.169.12 www.fsf.org +short
208.118.235.174

L'adresse 80.67.169.12 étant un des deux serveurs DNS fournis par FDN.

Imaginons maintenant que l'on souhaite visualiser tous les appels successifs aux différents serveurs DNS. On utilisera pour cela l'option +trace de la commande dig:

dig @80.67.169.12 www.fsf.org +trace

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @80.67.169.12 www.fsf.org +trace
; (1 server found)
;; global options: +cmd
.                       403117  IN      NS      g.root-servers.net.
.                       403117  IN      NS      e.root-servers.net.
.                       403117  IN      NS      h.root-servers.net.
.                       403117  IN      NS      a.root-servers.net.
.                       403117  IN      NS      f.root-servers.net.
.                       403117  IN      NS      m.root-servers.net.
.                       403117  IN      NS      c.root-servers.net.
.                       403117  IN      NS      l.root-servers.net.
.                       403117  IN      NS      i.root-servers.net.
.                       403117  IN      NS      d.root-servers.net.
.                       403117  IN      NS      b.root-servers.net.
.                       403117  IN      NS      j.root-servers.net.
.                       403117  IN      NS      k.root-servers.net.
;; Received 496 bytes from 80.67.169.12#53(80.67.169.12) in 140 ms

org.                    172800  IN      NS      a0.org.afilias-nst.info.
org.                    172800  IN      NS      a2.org.afilias-nst.info.
org.                    172800  IN      NS      b0.org.afilias-nst.org.
org.                    172800  IN      NS      b2.org.afilias-nst.org.
org.                    172800  IN      NS      c0.org.afilias-nst.info.
org.                    172800  IN      NS      d0.org.afilias-nst.org.
;; Received 473 bytes from 199.7.83.42#53(199.7.83.42) in 313 ms

fsf.org.                86400   IN      NS      ns3.gnu.org.
fsf.org.                86400   IN      NS      ns2.gnu.org.
fsf.org.                86400   IN      NS      ns1.gnu.org.
;; Received 191 bytes from 199.19.56.1#53(199.19.56.1) in 310 ms

www.fsf.org.            300     IN      A       208.118.235.174
fsf.org.                300     IN      NS      ns2.gnu.org.
fsf.org.                300     IN      NS      ns3.gnu.org.
fsf.org.                300     IN      NS      ns1.gnu.org.
;; Received 207 bytes from 208.118.235.164#53(208.118.235.164) in 98 ms

La première liste, celle des serveurs root, a été renvoyée par 80.67.169.12, le serveur de FDN auquel notre commande dig était adressée.

Parmi cette liste, le serveur l.root-servers.net (199.7.83.42) a été choisi pour envoyer la deuxième requête, on le voit avec le message "Received 473 bytes from 199.7.83.42#53(199.7.83.42) in 313 ms".

Ensuite le serveur a0.org.afilias-nst.info (199.19.56.1) a été utilisé ... et ainsi de suite.

On peut retrouver facilement les serveurs utilisés en se basant sur leur adresse IP avec la résolution inverse de la commande dig:

dig -x 199.7.83.42 +short
l.root-servers.net.

mercredi 3 août 2016

Gnome: Poussivité de l'ouverture des fichiers avec Nautilus

S'il y a bien quelque chose qui m'agace avec Gnome, c'est sa lenteur pour effectuer certaines opérations.

Sur Debian Wheezy, quand j'ouvre un fichier depuis l'explorateur de fichier nautilus, bien que l'éditeur choisi (gedit, emacs ou autre) ouvre le fichier instantanément, il y a toujours pendant quelques secondes le lanceur de Gnome qui reste ouvert idiotement dans la barre des tâches sous le nom "Ouverture de ..." comme on peut le voir sur la copie d'écran suivante:

Capture_du_2016-07-27_10_06_16.png

On a l'impression d'être sur une machine d'il y a 10 ans, c'est assez pénible !

Il faudrait tester si le problème se produit aussi sur Debian Jessie.

De plus si je double clique sur une image, bien que celle-ci soit ouverte le focus reste dans Nautilus !

Et après, j'entends dire que Xfce c'est dépassé et que à part Gnome, point de salut ...

- page 1 de 32