-1

重複の可能性:
ファイル シェル スクリプトから部分文字列を取得する必要がある

このシェルスクリプトについて少し助けが必要です。IP/TCP ヘッダーを表す変数があります。選択したヘッダーでトラフィック キャプチャをフィルタリングする必要があります。

> var=ttl 128 (only TTL=128)
> 
> tcpdump -Xvv -n -i eth0 -c 300 > capture.txt 2>/dev/null
> 

grep コマンドを使用しようとしていますが、ttl 128 の行しかありません。IP の送信元と送信先ではありません

> grep -i "$var" capture.txt > resultGrep.txt

tcpdump コマンドの結果はこのようなものです

15:29:18.164566 IP (tos 0x0, ttl 1, id 2394, offset 0, flags [none], proto UDP (17), length 125)
    10.0.0.155.58363 > 239.255.255.254.1900: UDP, length 97
    0x0000:  4600 0024 0000 0000 0102 3ad3 0a00 0000  F..$......:.....
    0x0010:  e000 0001 9404 0000 1101 ebfe 0000 0000  ................
    0x0020:  0300 0000 0000 0000 0000 0000 0000       ..............
15:29:18.164566 IP (tos 0x0, ttl 128, id 2394, offset 0, flags [none], proto UDP (17), length 125)
    10.0.0.131.58363 > 239.255.255.250.1900: UDP, length 97
    0x0000:  4600 0024 0000 0000 0102 3ad3 0a00 0000  F..$......:.....
    0x0010:  e000 0001 9404 0000 1101 ebfe 0000 0000  ................
    0x0020:  0300 0000 0000 0000 0000 0000 0000       ..............
15:29:18.164566 IP (tos 0x0, ttl 64, id 2394, offset 0, flags [none], proto UDP (17), length 125)
    10.0.0.147.58363 > 239.255.255.255.1900: UDP, length 97
    0x0000:  4600 0024 0000 0000 0102 3ad3 0a00 0000  F..$......:.....
    0x0010:  e000 0001 9404 0000 1101 ebfe 0000 0000  ................
    0x0020:  0300 0000 0000 0000 0000 0000 0000       ..............

ttl 128 ヘッダーを持つパケットから IP アドレスの送信元と IP アドレスの宛先が必要です。この例では、出力結果は次のようになります。

10.0.0.131.58363 > 239.255.255.250.1900

4

1 に答える 1

0

grepコンテキストの表示をサポートしている場合-Aは、試すことができます

grep -A 1 -e 'ttl 128' capture.txt | grep '^    ' | cut -d: -f1

最初の grep は、すべての行とそれttl 128に続く 1 行を表示します。2 番目の grep は、空白で始まる行をフィルタリングします。finalcutは、最初の より前のすべてを選択します:

于 2013-01-14T21:39:29.113 に答える