【環境】RedHat Linux as 3
【現在】
Net-SnmpのTrapHandleを取得し
標準入力から受けた情報をファイルに出力する処理を作成中です。
出力するファイル名を現在時刻にしたいのですが
シェルを実行してもファイルが出力されません。
Perl初心者で手探りで調査していますが煮詰まってしまいました。
すみませんがご教示願います。
【処理内容】
・snmptrapd.conf
traphandle default /root/bin/trap.sh
・trap.sh
#!/usr/bin/perl
@tim = localtime(time);
$tim[5] += 1900;
$tim[4] += 1;
for($idx=0;$idx<5;$idx++){
$tim[$idx] = sprintf("%02d",$tim[$idx]);
}
while (<STDING>) {
$buf. = $_;
}
open (FILE,">>/tmp/$T[5]$T[4]$T[3].txt");
print FILE $buf;
print FILE "--------\n";
close(FILE);
No.2ベストアンサー
- 回答日時:
その三か所を修正すれば動くと思うのですが、それで動かないというのであれば
> open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt");
を、
print "/tmp/$tim[5]$tim[4]$tim[3].txt\n";
open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt") or die $!;
のように変更して、期待通りのファイル名になっているか、
エラーが出ないかどうかを確認してください。
あと、
@tim = localtime(time);
$tim[5] += 1900;
$tim[4] += 1;
for($idx=0;$idx<5;$idx++){
$tim[$idx] = sprintf("%02d",$tim[$idx]);
}
open のときのためだけにこれをしているのであれば、
openのところを
my $filename = sprintf '%4d%02d%02d', $tim[5]+1900, $tim[4]+1, $tim[3];
open FILE, '>>', "/tmp/$filename" or die "could not open '$filename'($!)";
のようにしてしまったほうが良いと思います。
入力の whileも気になるけど、こっちはまあいいや。
ご指摘ありがとうございました。
ご指摘通りファイル名が出力されているか、エラーがないか等の
調査を行いファイル名が正しく出力されました。
いろいろ試しながら行っていたので原因ははっきりわかりませんが
ソースはほどんど変更しなかった為
・権限のつけ忘れ
・誤字脱字
の可能性が高いと思います。
お手数お掛けしました。
ありがとうございました。
No.1
- 回答日時:
これ、作っている途中のものをそのまま貼り付けてますか?
どうみても単純な typo がいつくもあるんですけど。
STDING → STDIN
$buf. = $_; → $buf .= $_; ('.' と '=' の間を開けてはダメ)
open (FILE,">>/tmp/$T[5]$T[4]$T[3].txt");
T という配列変数はどこからでてきたのでしょうか?
この回答への補足
ご指摘ありがとうございます。
又、タイプミスが多くご迷惑お掛けしてすみませんでした。
紙に印刷したソースを入力し投稿した為
タイプミスが多くありました。
実際のソースを確認しましたら、
上記の間違いはありませんでした。
下記に修正内容を記述します。
while (<STDIN>) {
$buf.= $_;
}
open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt");
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでハードウェア制御?
-
クリックを何回もされて、重複...
-
perlでファイル内の文字列を置...
-
close()で例外が投げられる理由
-
ログの一部を消す Perl
-
Perl cgi 編集&削除
-
レコードの書込み判断
-
Net-Snmpのtraphandleよりshell...
-
PICでFatFsでオープンした内容...
-
Perl変数から外部プログラムの...
-
VBAでCSVファイルを途中行まで...
-
巨大なテキストの最終行を取得...
-
ファイル名を複数個配列で確保...
-
ファイル全てを .xlsm に変更し...
-
Perlで特定文字列から特定文字...
-
fgets で値が取得できない
-
VBAでCSVファイルの特定行を書...
-
エラー 'dir.h' : No such fi...
-
VBAでタブ区切りテキストの保存...
-
awkスクリプトでダブルクォーテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
close()で例外が投げられる理由
-
perlのflock関数でロックをかけ...
-
perlを用いた特定文字列間の抽...
-
テキストファイルの本文中に行...
-
ジョブショップスケジューリング
-
while(<ハンドラ>) {} で行数を...
-
改行コードが勝手に
-
perlでファイル内の文字列を置...
-
perlで大容量CSVのsort方法につ...
-
cgiの投票回数制限設定について...
-
perlで複数のファイルの処理に...
-
オープンしたファイルで行の連結
-
Perl で syntax error
-
巨大ファイルの行をを逆順に並...
-
パスワード自動生成スクリプト...
-
AutoCADのスクリプト
-
PICでFatFsでオープンした内容...
-
Perlで他サイトの情報を取得し...
-
パイプをopenして/usr/bin/grep...
-
telnet接続
おすすめ情報