Page 1 sur 2
[Awesome]Script non fonctionnel depuis màj kernel (en cours)
Publié : mer. 17 oct. 2012, 14:40
par Alex
Bonjour,
J'ai mis à jour mon kernel manuellement (comme j'ai toujours l'habitude de faire) par la compilation, et je me suis rendu compte qu'une option avait été supprimée car marquée comme dépréciée. Il s'agit de "WIRELESS_EXT_SYSFS", qui créeait une arborescence dans sys/call/.../net/wlan/wireless avec plusieurs informations comme la qualité du signal wifi.
J'utilise donc un script pour afficher cette valeur dans ma wibox, et vu que cette valeur n'existe plus, mon script ne fonctionne donc plus.
J'aimerais donc savoir si cette arborescence a été remplacée ou simplement supprimée.
Par avance merci à ceux qui m'aideront,
Le script :
Code : Tout sélectionner
-- WLAN widget
function wifistatus()
local wifion, wifistrength, f
f = io.input("/sys/class/net/wlan0/carrier")
wifion = io.read("*number")
f:close()
if wifion == 1 then
f = io.input("/sys/class/net/wlan0/wireless/link")
wifistrength = io.read("*number")
f:close()
if wifistrength > 49 then
return '<span color = "green">' .. wifistrength .. '</span>%'
elseif wifistrength > 39 then
return '<span color = "yellow">' .. wifistrength .. '</span>%'
elseif wifistrength > 29 then
return '<span color = "orange">' .. wifistrength .. '</span>%'
else
return '<span color = "red">' .. wifistrength .. '</span>%'
end
return '<span color = "red">off</span>'
end
end
wifiinfo = widget({ type = "textbox" , name = "wifiinfo" })
-- Assign a hook to update info
wifistatus__timer = timer({timeout = 1})
wifistatus__timer:add_signal("timeout", function() wifiinfo.text = "| WLAN: " .. wifistatus() .. " " end)
wifistatus__timer:start()
Re: [Awesome] Script Wibox non fonctionnel depuis màj kernel
Publié : mer. 17 oct. 2012, 15:14
par oktoberfest
Salut,
par hasard est ce que /proc/net/wireless te convient ?
Re: [Awesome] Script Wibox non fonctionnel depuis màj kernel
Publié : mer. 17 oct. 2012, 16:34
par Alex
Merci de ton aide,
/proc/net/wireless contient l'information que je veut.
Par contre dans ce fichier le contenu est présenté sous forme de table. J'ai réussi à extraire la valeur qui m'intéresse à l'aide de grep et cut :
/proc/net/wireless | grep wlan0 | cut -d" " -f6 | cut -d"." -f1
Le soucis c'est que le script n'accepte pas cette fonction, j'ai droit à un beau message d'erreur :
Code : Tout sélectionner
error loading module widgets.wlan from file '/home/username/.config/awesome/widgets/wlan.lua':
/home/username/.config/awesome/widgets/wlan.lua:11: ')' expected near '" -f6 | cut -d"'
Re: [Awesome] Script Wibox non fonctionnel depuis màj kernel
Publié : mer. 17 oct. 2012, 16:38
par oktoberfest
Je n'y connais rien en lua, mais ça me parait normal qu'il ne comprenne pas une ligne de commande !
Il te faut lire le fichier /proc/net/wireless puis ensuite, via du code lua, découper les lignes pour en extraire les éléments qui te conviennent.
Re: [Awesome] Script Wibox non fonctionnel depuis màj kernel
Publié : mer. 17 oct. 2012, 16:44
par Alex
Bon, je n'ai plus qu'à me plonger dans le lua pour coder tout ça.
Merci de ton aide.
Re: [Awesome] Script Wibox non fonctionnel depuis màj kernel
Publié : mer. 17 oct. 2012, 16:46
par vlamy
oktoberfest a écrit :Je n'y connais rien en lua, mais ça me parait normal qu'il ne comprenne pas une ligne de commande !
Il te faut lire le fichier /proc/net/wireless puis ensuite, via du code lua, découper les lignes pour en extraire les éléments qui te conviennent.
Je confirme ça se fait bien en lua. Je pense que tu devrais pouvoir t'en sortir avec un "string.match(..)". Le manuel
ici.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 12:46
par Roultabie
Bonjour,
Je suis tombé sur ton topic en ayant en le même problème à la mise à jour de mon système.
Grâce à /proc/net/wireless tout est rentré dans l'ordre.
Si tu as toujours un souci, voici la ligne à mettre dans ton rc.lua pour récupérer la valeur link de /proc/net/wireless :
Code : Tout sélectionner
f = io.popen('cat /proc/net/wireless | grep wlan0 | cut -d" " -f6 | cut -d"." -f1')
signal = f:read()
ainsi tu récupère le signal dans la variable susnommée
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:05
par oktoberfest
On peut optimiser un chouia avec :
Code : Tout sélectionner
f = io.popen('grep wlan0 /proc/net/wireless | cut -d" " -f6 | cut -d"." -f1')
signal = f:read()
On lance un processus de moins, toujours ça de gagné.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:11
par Ypnose
Je suis absolument sûr que tout cela est réalisable avec AWK et ça économiserai encore un processus.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:16
par oktoberfest
je pense aussi (peut-être que sed ferait aussi l'affaire), mais il faudrait que quelqu'un poste le contenu du fichier /proc/net/wireless, on aurait une base de travail.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:20
par Ypnose
Voilà:
Code : Tout sélectionner
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 46. -64. -256 0 0 0 0 327 0
La valeur recherché est 46 (dans mon cas)?
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:25
par Roultabie
C'est bien ça, tu m'a grillé, j'allai poster le résultat.
C'est la valeur link que l'on souhaite.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:25
par Ypnose
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:26
par oktoberfest
Note : il reste encore le '.' à la fin.
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:31
par Ypnose
Ah ouai passons un coup de sed:
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 13:40
par oktoberfest
Ce serait bien d'avoir un seul processus (juste pour le côté élégant) mais à part faire un sed à la place de awk avec une horrible expression régulière, je ne vois pas comment faire autrement
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 14:08
par Ypnose
C'était hard mais j'ai réussi:
Je mérite bien un "Bravo"

Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 14:10
par oktoberfest
Excellent

On doit bien gagne 2ms de temps d'exécution maintenant
En tout cas bel exemple d'optimisation
Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 15:53
par Roultabie
Arff, c'est moi ou vous êtes acharnés de l'expression régulière ?
En tous cas merci !
Je serai tenté de vous refiler tout mon rc.lua moi

Re: [Awesome]Script non fonctionnel depuis màj kernel (en co
Publié : ven. 09 nov. 2012, 18:26
par Ypnose
Effectivement, je suis un maniaque de la simplicité (et aussi un intégriste de awk). Je fais quasiment tout avec.
C'est vrai que dans la commande que tu as donné, il y a trop de processus (et puis je n'aime pas cut)

.