• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux上でtcpdumpの出力をperlで処理したいと考えています)

Linux上でtcpdumpの出力をperlで処理する方法

このQ&Aのポイント
  • Linux上でtcpdumpの出力をperlで処理する方法をご紹介します。
  • tcpdumpの標準出力をperlの標準入力で受け取る方法について説明します。
  • perlでteeを作成してtcpdumpの出力をリアルタイムに表示する方法を解説します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

foreach(<>){ でなく while(<>) { でどうでしょう?

ecoegg
質問者

お礼

うまくいきました! ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • cshからperlを呼び出しファイルに出力

    いつもお世話になっております。 cshからperlを呼び出しperlが出力する内容と入力項目を実行しているcsh内部で行ない結果をファイルへ出力したいのですが、そのような事ができるのでしょうか? ---------- cshファイル内 #!/bin/csh echo "●perl a.pl を実行します" | tee a.log perl a.pl ---------- perlファイル内 (perlがわかりませんので、perlの内容をcsh形式で記述させていただきます) (1)echo -n "日付を入力して下さい" (2)echo "⇒ " (3)set INPUT_DATE = $< (4)echo "日付:$INPUT_DATE " exit 0 ---------- cshから実行されたperl(csh)の内容[(1)(2)(3)(4)]をファイル(| tee a.log)へ出力することが可能でしょうか? ご存知の方がいらっしゃいましたらご教授願います。

  • warnやdieの出力先を変更したい

    お世話になります。 現在perlを勉強しているのですが(ActivePeal5.12.2) コマンドプロンプトから test.pl > test.log と実行した場合、test.pl内で標準出力した文字列がtest.logにリダイレクトされますが test.pl内で ~die "ERROR~"とした場合、"ERROR~"はtest.logに出力されません。 これを簡単にtest.logに出力する方法はないでしょうか。 リダイレクトせず実行した場合、画面に出力されているのでリダイレクトすればそのまま良いと思っていたのですが・・

    • ベストアンサー
    • Perl
  • Perl 内で実行される Perl が STDOUT に吐いたものを変数で受け取りたい

     凄い不思議な質問タイトルになってしまいましたが……(笑)  下記のようなソースを実行したとします。 -------------------------○ source.pl open(IN, "<dest.pl"); foreach(<IN>){$s.=$_;} close(IN); eval($s);  このとき、source.pl で実行される dest.pl には別の Perl プログラムが入っています。  で、dest.pl の内部にはいくつかの print ""; があって、標準出力をおこなっているわけですが、この標準出力結果を画面には出さず、source.pl 側で受け取る事はできないもんでしょうか。   @r = `dest.pl`;  という方法もあるとは思うんですが、なんとか eval でやりたいのです。  なんかパイプとか繋ぎなおせば何とかなりそうな気もするんですが……。  何かご存知の方がいらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Perl
  • 標準出力と標準エラー出力を時系列にファイルへ

    例として、perlなどで、(test.plとします)  print "stdout1\n";  print STDERR "STDERR1\n";  print "stdout2\n";  print STDERR "STDERR2\n";  print "stdout3\n";  print STDERR "STDERR3\n"; このように、標準出力と、標準エラー出力が混在した状態の処理があった場合、 コマンドプロンプト(Windows2000)にて、 C:\>test.pl とすると、 stdout1 STDERR1 stdout2 STDERR2 stdout3 STDERR3 のように時系列に出力されますが、これをログファイルに取ろうとして、 C:\>test.pl 1>log.txt 2>&1 とすると、 C:\>cat log.txt STDERR1 STDERR2 STDERR3 stdout1 stdout2 stdout3 のように、標準エラー出力が先に吐き出されてしまいます。 これを画面出力時と同様に時系列で取れるようにしたいのですが、どのようにすれば良いでしょうか? 単純なことで困っています。よろしくお願いします。

  • teeコマンドを使わずにUNIXで標準出力とエラー出力を、ファイルと標準出力の両方に出すには?

    UNIX系のBシェルで、 コマンドを実行して、 その標準出力とエラー出力をログファイルに出力し、 かつ、同じものを標準出力にも出力したいのです。 また、その後でコマンドの戻り値$?をエラーチェックしたいです。 このため、パイプでteeコマンドを使用すると戻り値が上書きされてしまいます。 いったん一時ファイルに出力するしかないのでしょうか?

  • Windows版Perlの標準入力&標準出力

    Windows2000にActive Perl5.6をインストールしています。 標準入力をそのまま標準出力するプログラムを作っているのですが うまく動きません。 DOSコマンドの使い方が間違っているのか、Perlの書き方が間違って いるのか、それともWindows版のPerlではこのような使い方はできない のか、教えてください。 ■プログラムソース(c:\test.pl) while(<>){ print; } ■実行方法 c:\data.dat|test.pl>data2.dat ■データ(data.datの中身) こんにちわ ※実行するとdata2.datにdata.datの内容がCOPYされる 予定なのですが、正しく動きません。

    • ベストアンサー
    • Perl
  • perlのファイルへの書き込みついて

    perl scriptにて処理を/var/log/messages等に、 エラーや実行結果を出力したいと考えています。 messagesログは他のスクリプトも使っているので、 他のプロセスがmessagesログを使っていたらすぐに書き込まずに待機して その処理が終わった後に書き込みを行うようなことをやりたいのですが、 どのようにしたら可能でしょうか。 出来ればCPAN等は使わずperl標準の機能で実装できたらと考えています。 perlのバージョンは5でお願いします。

  • 標準出力、標準エラー出力 以外の出力??

    Linux上のCADツールが端末に出力してくる文字列をファイルに落とすことができないで困っています。 どのようなことが起きているのでしょうか? また、このような場合、どのようにしたら端末上に流れる文字をすべてファイルとして保存できるのでしょうか。 %> CAD_TOOL.exe |& tee log として標準出力、標準エラー出力の両方をlogというファイルにおとしたつもりなのですが、画面に流れたすべての文字列が保存されている訳ではないのです。 Linuxの出力には標準出力と標準エラー出力の2つ(だけ)がある[*]、と思っていましたが他の出力方法があったりするのでしょうか。。。 [*]http://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8 宜しくお願いします。

  • 【sh】tee コマンドの代替方法

    お世話になります。 パイプを使わずにtee コマンドと同じように振る舞わせる方法がわかりません。 なにかよい知恵はありませんでしょうか。。。 今まで、bashスクリプトの中で 関数 | tee -a ログファイル名 という形式でログファイルを出力していたのですが 関数の中でシェル変数を書き換える必要があってパイプが使えなくなってしまいました。 リアルタイムに関数の標準出力をターミナル出力しつつ、ログファイルにも保存していきたいのですが こういう場合、どうすればよいのでしょうか? とりあえず touch ログファイル名 tail -f ログファイル名 & 関数 sleep 2 kill %1 という形で、暫定的に逃げているのですが kill したときに出力されるメッセージが消せずにかっこわるいので できればこの方法は変更したいです。 ご教示ください。

  • Perl から csh 実行

    やまとです。 いつもありがとうございます。 Perl + csh を同時(?)に実行する方法を教えてください。 OSはSunです。 具体的にどのような処理を行いたいか簡単に説明しますと。 1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。 2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。 3.Perlでcshによって出力されたファイルの内容を画面に表示します。 以下ソースを掲載します。(抜粋して) ================================================== = Perl ( test_perl.pl ) $data = "ABC"; $ret = system(`test_csh.sh $data`); ・ ・ ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。) ================================================== = Csh ( test_csh.sh ) source test_source.sh echo $1 > test.log ================================================== = test_source.sh setenv CLASSPATH .:/aaa・・・・・・ ↑ PATHの設定を行ってます。 ================================================== 画面に、「ABC」と出力させたいのです。 Perlからcshが実行されていないように思えるのですが、 Perlのsystem関数の使い方が誤っているのでしょうか? それとも、ClassPath等の設定をしなければならないのでしょうか? ちなみにコマンドから、 # test_csh.sh ABC と実行しますと、ファイルが出力され、かつ、sourceも実行されています。 Perlから実行する方法を教えてください。 説明が不十分であれば、補足いたしますのでご指摘ください。 宜しくお願いします。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • Androidからブラザー QL-1115NWBへの印刷方法について相談したい
  • お使いの環境はAndroidで無線LAN接続されています
  • 詳細な状況やトラブルの経緯については不明
回答を見る

専門家に質問してみよう