Grep/Awk/Sed/Trなどのテキスト処理プログラムを使用して、NessusレポートからIPアドレスとファイルパスを抽出する必要があります。
IPアドレスとファイルパスを分離するスクリプトはすでにありますが、テキストをさらに処理し、「リモートバージョンがまだパッチされていません...」を削除する必要があります。
192.168.1.1 - C:\WINDOWS\SYSTEM32\GPPREF.DLL HAS NOT BEEN PATCHED. REMOTE VERSION : 6.2.9200.16384 SHOULD BE : 6.2.9200.16859"
192.168.1.2 THE REMOTE HOST IS MISSING ONE OF THE FOLLOWING ROLLUP KBS : - 4022719 - 4022722C:\WINDOWS\SYSTEM32\BCRYPT.DLL HAS NOT BEEN PATCHED. REMOTE VERSION : 6.1.7601.23796 SHOULD BE : 6.1.7601.23816"
192.168.1.3 - C:\WINDOWS\SYSTEM32\GPPREF.DLL HAS NOT BEEN PATCHED. REMOTE VERSION : 6.2.9200.16384 SHOULD BE : 6.2.9200.16859"
192.168.1.4 - C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL12.ACT7\MSSQL\BINN\SQLSERVR.EXE HAS NOT BEEN PATCHED. REMOTE VERSION : 2014.120.5000.0 SHOULD BE : 2014.120.5203.0"
したがって、最終結果は上記の例のように次のように出力する必要があります。
192.168.1.1\WINDOWS\SYSTEM32\GPPREF.DLL
192.168.1.2\WINDOWS\SYSTEM32\BCRYPT.DLL
192.168.1.3\WINDOWS\SYSTEM32\GPPREF.DLL
192.168.1.4\プログラムファイル\マイクロソフトSQLサーバー\MSSQL12.ACT7\MSSQL\BINN\SQLSERVR.EXE
これまで私のスクリプトは次のようになりました。
!/空/配布
*もし["$1"==""];
echo "No file specified."
echo "Usage: nesparse [filename.csv]"
その他
cat $1 | tr -d "\n" | tr "\r" "\n" | awk -F '","' '{ print $5,$13 }' | grep "has not been patched." | sort -u | awk '{ match($0,/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*[cC]:\\(.*) has.*/; ip=substr $0,RSTART,RLENGTH);print ipadd ip} '
*
次のコードセクションは、上記の例のテキストを処理します。ここで、$5 は IP アドレスを印刷し、$13 はファイルパスを印刷します。
!/空/配布
* if [ "$1" == "" ];
echo "No file specified."
echo "Usage: nesparse [filename.csv]"
その他
cat $1 | tr -d "\n" | tr "\r" "\n" | awk -F '","' '{ print $5,$13 }' |
grep "まだパッチされていません。" |
2番目のawkパイプライン
* awk '{ は ($0,/([0-9]+.[0-9]+.[0-9]+.[0-9]+)] と一致します。[参照]:\(。)がある。 */ *
必要な出力に一致する正しい正規表現がありますが(図を参照)、正規表現出力を印刷する際に問題があります。
これはどの行ですか?
* ip=substr $0,RSART,RLENGTH);ipadd ip 印刷} ' *
ボーナスポイント:
IP正規表現はすべての数字と一致するため、192.168.1.1/1.1.1.1ですが、上記のバージョン番号(2014.120.5203.0)とも一致します。理想的には、この正規表現を修正する必要があります。 *[ 0-9]+.[0 - 9]+.[0-9]+.[0-9]+ *
0.0.0.0 --> 255.255.255.255に制限してください。
ベストアンサー1
sed解決策:
sed -E 's/^(([0-9]+\.){3}[0-9]+).*(C:\\.+) *HAS NOT BEEN PATCHED.*/\1 - \3/' reportfile