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

2

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

  1. Seguindo as postagens aqui e em outros lugares, posso 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, a linha de contorno produz na tela: ACTIVE: interface_name (veja a imagem abaixo). Até agora, tão excelente.

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

    Abaixo: $ {downspeedf netup} kB / s $ {alignr} Acima: $ {upspeedf netup} kB / s $ {downspeedgraph netup 30,120 000000 000000} $ {alinhar} $ {upspeedgraph netup 30,120 000000 000000}

Isso claramente não está correto, porque o gráfico mostra, mas não tem conteúdo.

Duas perguntas: 1) existe uma maneira de ler a interface ativa que acabou de ser escrita uma linha antes ?; 2) se não, como posso incorporar a saída do script de netup nos gráficos abaixo e acima?

Aprecie qualquer ajuda.

Jerry

    
por Jerry Bond 25.11.2017 / 03:38

1 resposta

1

O que você pode fazer é chamar eval para atrasar a chamada de upspeedf e assim por diante até que você tenha chamado seu script e ele tenha retornado o nome da interface.

Por exemplo,

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

Observe a duplicação de $ , que se tornará um único $ para o eval. Infelizmente, seu script será chamado em cada ciclo de atualização, portanto, talvez você queira otimizar seu script. Não há diferença se você usar execi com um intervalo.

Para total versatilidade, você precisará usar uma função lua, que é muito para aprender. Se a sua interface precisar ser determinada apenas 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.

Note que ${eval} está quebrado na versão 1.10 até este patch que eu acho ser o 1.10.3 ou .4.

    
por 25.11.2017 / 15:24

Tags