¿Cómo puedo usar la salida de un execi en un conky en una línea posterior?

¿Cómo puedo usar la salida de un execi en un conky en una línea posterior?

No soy un programador, solo alguien que intenta trabajar con conky para la distribución predeterminada con una distribución de Linux. Aquí estoy intentando obtener una configuración de red automática.

  1. Siguiendo publicaciones aquí y en otros lugares, puedo imprimir la interfaz de red activa con esta línea:

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

"netup" se refiere a un pequeño script en /usr/local/bin/ que tiene una sola línea:

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

En mi caso esa línea conky produce en la pantalla:ACTIVO: nombre_interfaz(ver imagen a continuación). Hasta ahora, todo excelente.

  1. Ahora me gustaría reemplazar un comando específico de la interfaz sobre el tráfico o cualquier otra información de red con el nombre que genera ese script, lo que nos ahorraría a mí y al usuario una cierta cantidad de molestias. Probé esto, que funciona bien si se usa wlan0, etc.:

    Abajo: ${downspeedf netup}kB/s ${alignr}Arriba: ${upspeedf netup}kB/s ${downspeedgraph netup 30,120 000000 000000} ${alignr}${upspeedgraph netup 30,120 000000 000000}

Claramente eso no es correcto, porque el gráfico lo muestra pero no tiene contenido. gráficos netos sin contenido

Dos preguntas: 1) ¿hay alguna forma de leer la interfaz activa que se escribió una línea antes?; 2) si no, ¿cómo puedo incorporar la salida del script netup en esos gráficos descendentes y ascendentes?

Agradezco cualquier ayuda.

alemán

Respuesta1

Lo que puede hacer es llamar evalpara retrasar la llamada upspeedfy así sucesivamente hasta que haya llamado a su script y haya devuelto el nombre de la interfaz.

Por ejemplo,

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

Tenga en cuenta que la duplicación $se convertirá en una única $para la evaluación. Desafortunadamente, su secuencia de comandos será llamada en cada ciclo de actualización, por lo que es posible que desee optimizarla. No hay diferencia si lo usa execicon un intervalo.

Para una versatilidad total, necesitarás usar una función lua, que es mucho que aprender. Si su interfaz solo necesita ser determinada una vez al inicio, entonces ¿por qué no escribir un pequeño script de inicio para encontrar el nombre de la interfaz y editar el archivo .conkyrc con ese nombre antes de ejecutar conky?


Tenga en cuenta ${eval}que está roto en la versión 1.10 hasta estaparcheque creo que es para 1.10.3 o .4.

información relacionada