Un bug dans le screenlet sysmonitor
Si vous utilisez les Screenlets pour agrémenter votre desktop, vous aurez peut-être remarqué que le Screenlet Sysmonitor n’affiche pas l’adresse IP de votre PC.

La cause de ce bug se trouve dans le fichier /usr/share/pyshared/screenlets/sensors.py. Le code litigieux est affiché ci-dessous et vous pouvez voir que cette fonction, sensée retourner l’adresse IP de votre PC, utilise la commande ifconfig:
def net_get_ip(): # by Whise """Returns ip if it can""" ip = commands.getoutput("ifconfig") x = 0 while True: ip = ip[ip.find("inet addr:"):] ip = ip[10:] ipc = ip[:ip.find(chr(32))] if ipc != '127.0.0.1' and ipc != None and ipc !='1': return ipc return _('Cannot get ip')
La commande ifconfigqui vous donne l’état et la configuration de vos interfaces réseau retourne un string de données ressemblant à celui-ci:
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:25:b3:c0:b6:86 inet adr:10.224.66.135 Bcast:10.224.66.255 Masque:255.255.255.0 adr inet6: fe80::225:b3ff:fec0:b686/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:34235 erreurs:0 :0 overruns:0 frame:0 TX packets:23840 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:100 Octets reçus:33282663 (33.2 MB) Octets transmis:3990859 (3.9 MB) Mémoire:98400000-98420000
Or, la fonction net_get_ip() recherche la chaîne de caractères contenant inet addr pour localiser l’adresse IP. Le seul problème c’est que cette chaîne de caractères est introuvable dans ce que retourne la commande ifconfig à cause d’un d de trop. La chaîne de caractères est en effet inet_adr et non pas inet_addr.
Pour contourner le bug en attendant qu’une mise à jour corrige le problème, vous pouvez éditer le fichier /usr/share/pyshared/screenlets/sensors.py et modifier le fichier vous même:
$ gksudo gedit /usr/share/pyshared/screenlets/sensors.py
Changez les lignes concernées pour qu’elles soient semblables à ceci:
ip = ip[ip.find("inet adr:"):] ip = ip[9:]
Sauvez le fichier et dans le gestionnaire de Screenlets, cliquez sur le bouton Tout redémarrer. L’adresse IP doit maintenant apparaître.
Notez que j’ai signalé ce bug sur Launchpad.
Posted: août 17th, 2010 under python, Ubuntu.
Comments: none
Tweet