私はプログラマーではなく、Linux ディストリビューションのデフォルト ディストリビューションとして conky を使おうとしているだけの人間です。ここでは、自動ネット セットアップを実現しようとしています。
ここや他の場所での投稿に従って、次の行でアクティブなネットワーク インターフェイスを印刷できます。
${color2}アクティブ: ${color3}${execi -300 netup}${color}
「netup」は、/usr/local/bin/ にある次の 1 行の小さなスクリプトを指します。
ip addr show | awk '/inet.*brd/{print $NF; exit}'
私の場合、そのコンキー ラインは画面上に次のように表示されます。アクティブ: interface_name(下の画像を参照) これまでのところ、非常に良好です。
ここで、トラフィックやその他のネット情報に関するインターフェース固有のコマンドを、そのスクリプトが出力する名前に置き換えて、私とユーザーの手間をある程度省きたいと考えています。これを試してみましたが、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 用だと思います。