シェルスクリプトでリスニングポートを移植可能にする

シェルスクリプトでリスニングポートを移植可能にする

私はアプリケーションの初期化スクリプトがあり、スクリプトからPIDを取得できることを知っています。 PIDに関連付けられたTCPリスンポートを出力するために、ステータスコマンドにいくつかのロジックを追加しようとしています。次の質問に対する回答をよく読んでいます。特定のPIDへの現在のネットワーク接続をすべて一覧表示する方法は?しかし、この状況ではどちらが最も適切かはまだわかりません。

重要ではありませんが、可能な限り移植可能で実行に失敗した場合は、正常に失敗することを確認したいと思います。これまでいくつかの選択肢を考えてきましたが、どちらが最もポータブルであるか(どちらも私のテスト環境で動作します)、またはこれを達成するためのより良い方法があるかどうかはわかりません。

これまで私が思いついた内容は次のとおりです。

lsof -anP -i -p $APP_PID -sTCP:LISTEN -Fn | \
sed -e '/^n/ !d; /127.0.0.1/ d; s/n.*:\(.*\)/\1/' | sort -h | paste -s -d','

netstat -tlpn | grep $APP_PID | \
awk '$4!~/127.0.0.1/ {split($4,listener,":"); print listener[2]}' | \
sort -h | paste -s -d','

(おそらくgrepをawkに入れることはできますが、awkに慣れていません。)

どちらも以下のようにリストを出力します。 4500,9233,9475,27000

ターゲットコンピュータで1つのコマンドと別のコマンドを使用できる場合は、どのコマンドを実行する必要があるかをテストするための良い方法はありますか?それとも、移植性の観点からは、あるコマンドの組み合わせが他のコマンドの組み合わせよりも優れていますか? (Linuxターゲットを想定し、echoスクリプトの外部でLSB定義関数のみを使用できます)

ベストアンサー1

おすすめ記事