2011-01-10 7 views
0

最近、誰かのcronジョブが実行時に警告を送信したスクリプトを呼び出すときに問題が発生しました。私はそれが誰だったのか、どのサーバが稼働していたのかを知りたかったのです。スクリプトを呼び出す人(cron)を確認する

問題は他の誰かによって解決されましたが、私はジョブが実行されているホスト/ユーザー名を調べるために何ができるのだろうと思いました。私が考えることの1つは、スクリプト(Perl)を編集し、Sys :: Hostnameを使うことでした。他に何か?

ありがとうございます!

+3

、電子メールのヘッダに – ajreal

+0

@ajrealをチェックし、彼は警告がで配信されたと言っていませんでしたEメール。 – cjm

+0

私の悪い、私のもともとは、アラートが電子メールによるものであることを意味した – ajreal

答えて

1

アラートを送信するメールを使用しない限り、自動的に行う方法はありません。メールにはヘッダーにホスト名が含まれているので、少なくともどこから来たのかを見ることができます(ユーザーとホスト)。タイムスタンプは、cronジョブの場所を特定するのに役立ちます。

その他のアラート(SMS、ポケットベルなど)の場合は、メッセージにユーザーとホスト名を含めるポリシーにする必要があります。

2

あなたが言ったように、Sys::Hostnameでホスト名を取得できます。またgetpwuid($<)でユーザ名を取得することができます。

use Sys::Hostname; 

my $info = getpwuid($<) . '@' . hostname; 

print "$info\n"; # prints [email protected] 
1

また、あなたのスクリプトに追加することができます:print `env|sort`; - USERNAMEまたはLOGNAMEを明らかにするという。あなたがあなたのプログラムの出力を台無しにしたくない場合は、ファイルにログ:あなたがメールを持っている

use POSIX 'strftime'; 
open my $log, '>>', 'logfile' or die "can't append to logfile: $!\n"; 
print $log strftime(%Y-%m-%d %T", localtime), " - starting $0\n"; 
print $log `env|sort`; 
close $log;