Узнайте, кто / что вызывает скрипт (cron) - PullRequest
0 голосов
/ 10 января 2011

Недавно у меня возникла проблема, когда кто-то из cron-заданий вызывал скрипт, который отправлял мне уведомление при запуске. Я хотел выяснить, чья это работа и на каком сервере он работает.

Проблема была решена кем-то другим, но мне было интересно, что я мог бы сделать, чтобы узнать, с какого хоста / имени пользователя запускается задание. Одна вещь, о которой я мог подумать, это отредактировать скрипт (Perl) и использовать Sys :: Hostname. Что-нибудь еще?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 10 января 2011

Как вы сказали, вы можете получить имя хоста с помощью Sys :: Hostname .Вы также можете получить имя пользователя с помощью getpwuid($<):

use Sys::Hostname;

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

print "$info\n"; # prints user@host
1 голос
/ 10 января 2011

Вы также можете добавить к своему сценарию: print `env|sort`; - это откроет имя пользователя или имя пользователя.Если вы не хотите связываться с выводом вашей программы, запишите ее в файл:

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;
1 голос
/ 10 января 2011

Нет автоматического способа сделать это, если вы не используете почту для отправки оповещений.Почта содержит имя хоста в заголовке, так что вы можете хотя бы увидеть, откуда оно пришло (пользователь и хост).В этом случае отметка времени должна помочь найти задание cron.

Для всех других форм оповещений (SMS, пейджер и т. Д.) Следует установить политику включения имени пользователя и имени хоста в сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...