execiの出力をconkyの後続の行で使用するにはどうすればいいですか

execiの出力をconkyの後続の行で使用するにはどうすればいいですか

私はプログラマーではなく、Linux ディストリビューションのデフォルト ディストリビューションとして conky を使おうとしているだけの人間です。ここでは、自動ネット セットアップを実現しようとしています。

  1. ここや他の場所での投稿に従って、次の行でアクティブなネットワーク インターフェイスを印刷できます。

    ${color2}アクティブ: ${color3}${execi -300 netup}${color}

「netup」は、/usr/local/bin/ にある次の 1 行の小さなスクリプトを指します。

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

私の場合、そのコンキー ラインは画面上に次のように表示されます。アクティブ: interface_name(下の画像を参照) これまでのところ、非常に良好です。

  1. ここで、トラフィックやその他のネット情報に関するインターフェース固有のコマンドを、そのスクリプトが出力する名前に置き換えて、私とユーザーの手間をある程度省きたいと考えています。これを試してみましたが、wlan0 などが使用されている場合は問題なく動作します。

    ダウン: ${downspeedf netup}kB/s ${alignr}アップ: ${upspeedf netup}kB/s ${downspeedgraph netup 30,120 000000 000000} ${alignr}${upspeedgraph netup 30,120 000000 000000}

それは明らかに正しくありません。グラフには表示されていますが、内容がないからです。 内容のないネットグラフ

2 つの質問: 1) 1 行前に書き込まれたアクティブ インターフェイスを読み取る方法はありますか? 2) そうでない場合、netup スクリプトの出力をダウン グラフとアップ グラフに組み込むにはどうすればよいですか?

ご協力いただければ幸いです。

ジェリー

答え1

スクリプトを呼び出してインターフェースの名前が返されるまで、 を呼び出してevalの呼び出しを遅らせることができます。upspeedf

例えば、

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

2 倍にするとeval では$1 倍になることに注意してください。残念ながら、スクリプトは更新サイクルごとに呼び出されるため、スクリプトを最適化することをお勧めします。間隔を指定して$使用しても違いはありません。execi

完全な汎用性を得るには、lua 関数を使用する必要がありますが、これを学ぶにはかなりの時間がかかります。インターフェイスを最初に 1 回だけ決定する必要がある場合は、インターフェイス名を見つけるための小さな起動スクリプトを作成し、conky を実行する前にその名前で .conkyrc ファイルを編集してみてはいかがでしょうか。


注意:${eval}これはバージョン1.10では壊れていますパッチこれは 1.10.3 または .4 用だと思います。

関連情報