No big deal

セキュリティやプログラミングとかいろいろ。日々サーバーやルーターと戯れています。

tcpdumpのキャプチャ時間を指定する

はじめに

ネットワークのトラブルシューティングやパケットの流れを追うときに使用するtcpdumpだが、 通常実行時はscript等で制御していない限りキャプチャを実行し続ける。

どうせならコマンドオプションで実行時間を指定できないかと思い調べた。
(終了するのを忘れてpcapファイルが肥大化してたとか避けたい。。)

結論

-W オプションと -Gオプションというtcpdumpのログローテートオプションを使用することによって実現可能。

-W はログローテートの実行回数、-G はログローテートの実行間隔を指定する。
例えばeth0に流れるすべてのパケットを60秒間キャプチャして、pcapファイルに保存したい場合は以下のようにする。

# tcpdump -i eth0  -w ./test.pcap -W1 -G60

ローテート回数を1回、間隔を60秒に指定している。よって実行時間が60秒に達した時点でローテートが実施されコマンドが終了する。 (基本的にファイルを分割して保存したいとかなければ、ローテート回数は1回で良いと思う)

あとがき

さらに調べたところcronでtcpdumpを実行する際に timeout コマンドで実行時間を指定している方がいた。

秒数以外の値を何も指定しない場合は TERM シグナルで引数で指定しているコマンドを終了させるので、この方法も良さそう。
(この方法のほうが楽のような気がしてきた。)

qiita.com

参考文献

定期的にtcpdumpをある期間だけ実行したいという時 - その手の平は尻もつかめるさ

timeout コマンド | コマンドの使い方(Linux) | hydroculのメモ

macOS固有のコマンドについて調べる。

macOSUNIXライクのOSとして有名ですが、固有のコマンドが存在します。
覚えておくと後々便利そうなコマンドをメモ。

 

1.pbcopy

ターミナルの標準入力をペーストボード(クリップボード)に保存するコマンド。 よくsshで使用する公開鍵をコピーする際に使用しています。

e.g)

 $ pbcopy < ~/.ssh/id_rsa.pub

出力をリダイレクトでpbcopyに入力することによってファイルの中身をクリップボードにコピーできます。
ちなみに直接打ち込んでクリップボードに保存することも可能です。

$ pbcopy (終了はCtrl + D)
hogehoge

f:id:ryo8ma:20190730152816p:plain
pbcopy_clipboard

クリップボードに保存されていることが確認できます。

2.pbpaste

クリップボードに保存されている内容を標準出力へ渡すコマンド。

$ echo 'hogehoge' | pbcopy
$ pbpaste > test.txt
$ cat test.txt
hogehoge

pbcopyと併用すれば作業を効率化できそうです。

3.screencapture

通常macスクリーンショットを撮る場合は「Cmd + Shift + 4(3)」のショートカットキーを使用することが 多いと思います。ターミナル上でも同様の操作を行うことが可能です。

・選択範囲を指定のディレクトリに保存

$ screencapture -i ~/Desktop/hogehoge.png

-c オプションでクリップボードに保存することも可能。

$ screencapture -ic ~/Desktop/hogehoge.png

4.open

ターミナルからファイル、ファルダ、URLをopenコマンドを使用することによって開くことが可能です。 (アプリケーションを指定して開くこともできます。)

・WEBページを開く

$ open https://ryo8md-ls.hatenablog.com/

まとめ

まだまだmac固有のコマンドは存在するので、便利そうなのを発見したら追記します。

参考情報

Mac スクリーンショットコマンド「screencapture」の使用方法まとめ | D-Box

OSXの固有コマンド - MacWiki