grep -v grepの機能

grep -v grepの機能

私はgrep -v grep以下を理解しようとしています。

ssh  $server -p $port -o "ConnectTimeout 5" |   grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l

それとも、TCP接続テストを見つけるためのより良い方法はありますか?

ベストアンサー1

SSH接続を確立し、5秒以内にコマンドを実行できることを確認するには、次の手順を実行します。

if ssh -o BatchMode=yes -o ConnectTimeout=5 -p "$port" "$server" true; then
  printf '%s\n' "$server is up"
fi

あなたの命令自体は何の意味もありません。リモートサーバーで実行するコマンドを提供していないため、これは擬似ssh端末を要求し、リモートユーザーのログインシェル(またはForcedCommand)を起動するモードで実行されます。rlogin

次に、出力に複数のフィルタを適用します。

  • grep -v "Connection refused":その中のすべての行をフィルタリングします。出力これはConnection refused、エラーメッセージが発生したときにフィルタリングされる標準出力ではなくstderrに書き込まれるため、意味がありませんgrep
  • grep "Connected to":含まれている行のみを選択しますConnected toConnection refused行に両方が含まれる可能性がないため、含まれている行も除外されます。
  • grep -v grep、そして含まれている行も削除します(したがって、andとnotgrepの両方を含む行になります!)Connected togrepConnection refused
  • wc -l:結果の行数を計算します(したがってstdoutに含まれているか含まれているssh行を除く)。この番号は、接続が閉じられたとき、またはシェルセッションが終了したとき(たとえば、ユーザーが入ったとき)にのみ出力されます。ただし、ユーザーは出力を見ることができないため(最終的にすべてが起こるため)、ユーザーはセッションを終了するために入力が必要であることをほとんど知りません。Connected togrepConnection refusedwcexitwcexit

おすすめ記事