Como posso usar a saída de um execi em um conky em uma linha subsequente

Como posso usar a saída de um execi em um conky em uma linha subsequente

Não sou um programador, apenas alguém que está tentando trabalhar com conky para distribuição padrão em uma distribuição Linux. Aqui estou tentando obter a configuração automática da rede.

  1. Seguindo postagens aqui e em outros lugares, consigo imprimir a interface de rede ativa com esta linha:

    ${color2}ATIVO: ${color3}${execi -300 netup}${color}

O "netup" refere-se a um pequeno script em /usr/local/bin/ que possui uma única linha:

ip addr show | awk '/inet.*brd/{print $NF; exit}'

No meu caso essa linha conky produz na tela:ATIVO: interface_name(veja imagem abaixo). Até agora, tudo excelente.

  1. Agora eu gostaria de substituir um comando específico da interface sobre tráfego ou qualquer outra informação da rede pelo nome que esse script gera, o que pouparia a mim e ao usuário um certo aborrecimento. Eu tentei isso, que funciona bem se wlan0 etc. for usado:

    Para baixo: ${downspeedf netup}kB/s ${alignr}Para cima: ${upspeedf netup}kB/s ${downspeedgraph netup 30.120 000000 000000} ${alignr}${upspeedgraph netup 30.120 000000 000000}

Isso claramente não está correto, porque o gráfico mostra, mas não tem conteúdo. gráficos líquidos sem conteúdo

Duas perguntas: 1) existe uma maneira de ler a interface ativa que foi escrita apenas uma linha antes?; 2) se não, como posso incorporar a saída do script netup nesses gráficos para baixo e para cima?

Agradeço qualquer ajuda.

Jerry

Responder1

O que você pode fazer é chamar evalpara atrasar a chamada upspeedfe assim por diante até chamar seu script e ele retornar o nome da interface.

Por exemplo,

${eval $${downspeedgraph ${exec netup} 30,120 000000 000000} } 
${alignr}
${eval $${upspeedgraph   ${exec netup} 30,120 000000 000000} }

Observe que a duplicação $se tornará uma única $para a avaliação. Infelizmente, seu script será chamado a cada ciclo de atualização, então você pode querer otimizá-lo. Não há diferença se você usar execicom intervalo.

Para total versatilidade, você precisará usar uma função lua, que é bastante para aprender. Se sua interface só precisa ser determinada uma vez no início, por que não escrever um pequeno script de inicialização para encontrar o nome da interface e editar o arquivo .conkyrc com esse nome antes de executar o conky.


Nota, ${eval}está quebrado na versão 1.10 até estecorreçãoque eu acho que é para 1.10.3 ou .4.

informação relacionada