Houve dois problemas: permissões do conky e nome da interface de rede (NIC). O breve resumo é:
-
execute este comando para dar a Conky as permissões necessárias:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/conky
-
Renomeie sua NIC sem fio de eth1 para wlan0. Aqui está como .
Por quê?
Algumas pessoas sugeriram (em seus sites) que o problema pode estar no adaptador sem fio boradcom, que bloqueia o pedido do conky para obter as informações do adaptador , mas desde a ferramenta de linha de comando iwlist foi capaz de obter a lista de redes sem fio no meu bairro, eu duvidei que o bloqueio de pedidos seria o problema, embora outra ferramenta de linha de comando iwspy não conseguisse informações.
Você pode obter uma lista detalhada de redes sem fio em sua vizinhança usando a ferramenta de linha de comando iwlist :
iwlist eth1 scan
De fato, um dos problemas foi essa falta de privilégios de usuário root apropriados. Aparentemente, o Conky precisa ter privilégios de root para acessar bibliotecas e funcionalidades de rede. Se você não quer rodar conky com privilégios de root, existe uma maneira (desde o kernel Linux 2.2) de dar aos programas os privilégios que eles precisam sem executá-los sob privilégios de root. Você pode dar a qualquer programa (seu arquivo binário executável) privilégios de raiz parcial para executar funcionalidades específicas (por exemplo, funcionalidades de rede, funcionalidades do sistema de arquivos, etc). Isso é totalmente explicado nesta página man e parcialmente aqui . Portanto, precisamos delegar (ao arquivo binário de Conky) os privilégios de raiz apropriados para realizar tarefas relacionadas à rede e capturar pacotes brutos de um adaptador sem fio / fio. Em outras palavras, as tarefas são categorizadas em diferentes categorias de privilégios. Duas dessas categorias de acesso (que o conky precisa delas) são chamadas de cap_net_admin e cap_net_raw. Precisamos dar a essas classes de permissão. Isso é feito pelo seguinte comando (fonte: here ):
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/conky
Além desse problema de permissão, uma resposta a um tópico me deu uma pista de que o nome da minha placa de interface de rede (NIC) (neste caso meu adaptador sem fio) pode ser a origem do problema, pois "pressupõe" que os nomes de interface começando com "eth" (eth1, no meu caso) são ethernet ( cabo) e, portanto, esses cartões não devem representar a intensidade do sinal. Embora a pista fosse muito preciosa, mas nenhuma solução foi oferecida lá no tópico acima mencionado. Eu pensei que renomear a interface pode resolver o problema, e realmente aconteceu! Eu renomei a interface sem fio (que foi chamada eth1 por padrão) para wlan0. Aqui , você pode encontrar como renomear uma interface de rede cartão no Linux. Apenas observe que nesse artigo, eles renomearam a interface para "wan0", eu a renomei como wlan0 .
E aqui está a parte da rede do meu arquivo de configuração .conkyrc:
${if_existing /proc/net/route eth0}
${voffset -6}${font PizzaDude Bullets:size=14}O${font} Up: ${upspeed eth0} kb/s
${alignr}${upspeedgraph eth0 8,60}
${voffset 4}${font PizzaDude Bullets:size=14}U${font} Down: ${downspeed eth0} kb/s ${alignr}${downspeedgraph eth0 8,60}
${voffset 4}${font PizzaDude Bullets:size=14}N${font} Upload: ${alignr}${totalup eth0}
${voffset 4}${font PizzaDude Bullets:size=14}T${font} Download: ${alignr}${totaldown eth0}
${voffset 4}${font PizzaDude Bullets:size=14}Z${font} Signal: ${wireless_link_qual eth0}% ${alignr}${wireless_link_bar 8,60 eth0}
${voffset 4}${font PizzaDude Bullets:size=14}a${font} Local Ip: ${alignr}${addr eth0}
${voffset 4}${font PizzaDude Bullets:size=14}b${font} Public Ip: ${alignr} ${execi 3600 wget -O - http://ip.tupeux.com | tail}
${else if_existing /proc/net/route wlan0} ${voffset 4}${font PizzaDude Bullets:size=14}Z${font} Signal: ${wireless_link_qual wlan0}% ${alignr}${wireless_link_bar 8,60 wlan0}
${voffset 4}${font PizzaDude Bullets:size=14}O${font} Up: ${upspeed wlan0} kb/s ${alignr}${upspeedgraph wlan0 8,60}
${voffset 4}${font PizzaDude Bullets:size=14}U${font} Down: ${downspeed wlan0} kb/s ${alignr}${downspeedgraph wlan0 8,60}
${voffset 4}${font PizzaDude Bullets:size=14}N${font} Upload: ${alignr}${totalup wlan0}
${voffset 4}${font PizzaDude Bullets:size=14}T${font} Download: ${alignr}${totaldown wlan0}
${voffset 4}${font PizzaDude Bullets:size=14}a${font} Local Ip: ${alignr}${addr wlan0}
${voffset 4}${font PizzaDude Bullets:size=14}b${font} Public Ip: ${alignr} ${execi 3600 wget -O - http://ip.tupeux.com | tail}
${endif}
E finalmente, aqui estão alguns comandos extras para exibir e remover recursos (privilégios de raiz parcial e categorizada) de arquivos (executáveis / binários):
Você pode descobrir as permissões que cada arquivo tem ao executar o seguinte comando:
getcap filepath/filename
E remova todas as permissões (capacidades) de um arquivo:
setcap -r filepath/filename