Bash:非自動アクセス試行に使用されたすべてのIPアドレスを見つける

Bash:非自動アクセス試行に使用されたすべてのIPアドレスを見つける

私はbashで仮想マシンを作業しています。認証なしでコンピュータにアクセスしたいすべてのIPアドレスを見つけるには、auth.logファイルを使用するように求められました。私の質問に対する答えが見つからなかったようです。例は次のとおりです。ここに画像の説明を入力してください。

返されるすべての行は、私の共有ファイル/mnt/analytic/traitement/cueillette.txtに記録する必要があります。助けてください!ありがとう

答え1

grepをgrepに接続する必要はありません。 (これはほとんど常に非効率的で間違ったアプローチを取っているというシグナルです。 sedそれだけで作業に十分でしょう。or.or awkperl、それはsudo su root catただ言わないことです。

この試み:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

「認証失敗」に一致するすべての行について(注、いいえ「確実性フィリピン諸島cation"), このsedスクリプトは行の先頭からまでのすべての項目rhost=と IP アドレスの後のすべての項目を削除し、その行を印刷します。

正規表現を拡張するにはsedオプションを使用するので、エスケープなしで機能します。-E()+

sedコマンドがrootとして実行されても、sudo出力リダイレクトはそうではありません。これは、ルートではなく元のシェルで行われます。出力ファイルへの書き込みにroot権限も必要な場合はrunを使用してくださいteesudoたとえば、次のようになります。

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

関連情報