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

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

私は bash 上の仮想マシンで作業しています。auth.log ファイルを使用して、許可なくマシンにアクセスしようとしたすべての IP アドレスを見つけるように求められています。問題の解決策が見つからないようです。次に例を示します。ここに画像の説明を入力してください

返されたすべての行は、共有ファイル /mnt/analyse/traitement/cueillette.txt に書き込まれている必要があります。助けてください。ありがとうございます

答え1

grep を grep にパイプする必要はありません (これはほとんどの場合、非効率的で誤ったアプローチを取っていることを示しています。 sedこのタスクには だけで十分です。またはawk。またはperl)。これは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 シェルで実行されます。出力ファイルへの書き込みにも root 権限が必要な場合は、teeで実行しますsudo。例:

$ 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

関連情報