sshpassコマンドではなく出力から時間をキャプチャしたいです。
期待される出力
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
しかし、コマンドで次のようになります。
sshpass -p customer pssh -H "presto01 presto02 presto03" -l root -A -i "date" | grep '[0-9][0-9]:[0-9][0-9]:[0-9][0-9]'
[1] 12:45:45 [SUCCESS] presto01
Sun Jul 14 12:45:45 UTC 2019
[2] 12:45:45 [SUCCESS] presto03
Sun Jul 14 12:45:45 UTC 2019
[3] 12:45:45 [SUCCESS] presto02
Sun Jul 14 12:45:45 UTC 2019
私たちができること
sshpass -p customer pssh -H "presto01 presto02 presto03" -l root -A -i "date" | grep '[0-9][0-9]:[0-9][0-9]:[0-9][0-9]' | grep -v "^\["
Sun Jul 14 12:50:24 UTC 2019
Sun Jul 14 12:50:24 UTC 2019
Sun Jul 14 12:50:24 UTC 2019
しかし、これは醜い方法です
答え1
他の時間帯が気になる場合は、その回線の時間部分が最も安定しているはずです。たぶん月と曜日の名前を見つけるのは安全ではないかもしれません。
編集:IPアドレスと同様の部分と一致しないようにパターンをより正確にしました(パターンは数字やコロンの前後に一致しない可能性があります)。
したがって、時間を把握しようとすると、次のようにすることができます。
grep "\([^[^0-9:]\|^\)[0-9]\{1,2\}\(:[0-9]\{2\}\)\{2\}\([^[^0-9:]\|$\)"
一部のテストデータは上記のとおりです。
grep "([^[^0-9:]\|^)[0-9]{1,2}(:[0-9]{2}){2}([^[^0-9:] \|$)" << END Sun Jul 14 12:47:49 UTC 2019 一部のメッセージのアドレスは 01:11:91:05 Sun Jul 14 12:47:49 UTC 2019 01:11:91:05 です。住所が正しくありません。 123:23:03 1:3:43でもなく、彼の12:33:27でもありません。 2019年7月14日日曜日12:47:49 UTC END
次のように出力されます。
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
3つの数値部分が必要です。:
最初の数字部分は1〜2桁、残りの2つの数字部分は2桁でなければなりません。