Wie kann ich die Ausgabe einer Execi in einem Conky in einer nachfolgenden Zeile verwenden?

Wie kann ich die Ausgabe einer Execi in einem Conky in einer nachfolgenden Zeile verwenden?

Ich bin kein Programmierer, sondern nur jemand, der versucht, mit Conky für die Standardverteilung mit einer Linux-Distribution zu arbeiten. Hier versuche ich, ein automatisches Net-Setup zu erhalten.

  1. Den Beiträgen hier und anderswo folgend kann ich die aktive Netzwerkschnittstelle mit dieser Zeile ausdrucken:

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

„netup“ bezieht sich auf ein kleines Skript in /usr/local/bin/, das aus einer einzigen Zeile besteht:

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

In meinem Fall erzeugt diese konische Linie auf dem Bildschirm:AKTIV: Schnittstellenname(siehe Bild unten). So weit, so ausgezeichnet.

  1. Nun möchte ich einen schnittstellenspezifischen Befehl über den Datenverkehr oder andere Netzinformationen durch den Namen ersetzen, den das Skript ausgibt, was mir und dem Benutzer einiges an Aufwand ersparen würde. Ich habe Folgendes ausprobiert, was gut funktioniert, wenn wlan0 usw. verwendet wird:

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

Das ist offensichtlich nicht richtig, da die Grafik zwar etwas anzeigt, aber keinen Inhalt hat. Netzdiagramme ohne Inhalt

Zwei Fragen: 1) Gibt es eine Möglichkeit, die aktive Schnittstelle zu lesen, die gerade eine Zeile zuvor geschrieben wurde? 2) Wenn nicht, wie kann ich die Ausgabe des Netup-Skripts in diese Abwärts- und Aufwärtsdiagramme integrieren?

Ich bin für jede Hilfe dankbar.

Jerry

Antwort1

Sie können evalden Aufruf verzögern upspeedfusw., bis Sie Ihr Skript aufgerufen haben und es den Namen der Schnittstelle zurückgegeben hat.

Zum Beispiel,

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

Beachten Sie, dass die Verdoppelung für die Auswertung $zu einer Einzelzahl wird $. Leider wird Ihr Skript bei jedem Aktualisierungszyklus aufgerufen, daher sollten Sie Ihr Skript optimieren. Es macht keinen Unterschied, ob Sie es execimit einem Intervall verwenden.

Für volle Vielseitigkeit müssen Sie eine Lua-Funktion verwenden, was ziemlich viel zu lernen ist. Wenn Ihre Schnittstelle nur einmal beim Start bestimmt werden muss, warum schreiben Sie dann nicht ein kleines Startskript, um den Schnittstellennamen zu finden, und bearbeiten die .conkyrc-Datei mit diesem Namen, bevor Sie conky ausführen.


Hinweis, ${eval}ist in Version 1.10 bis jetzt defektPatchwas meiner Meinung nach für 1.10.3 oder .4 ist.

verwandte Informationen