Saturday, November 13th, 2010 12:16 am

А то я чуть крышей не двинулся.

Пару дней назад в request tracker приходит заявка от сотрудника, что ему сообщения от мониторинговой системы о некоторой проблеме присылают по два раза – с двух машин. Просит с одной выключить, ему столько не нужно.

Мониторинг сейчас в процессе переезда с одной машины на другую, ситуация вполне реальная. Ну там, скрипт перенесли, а отключить на старой машине забыли, бывает.

Иду на старую машину, нахожу скрипт, запускаю crontab, чтоб его отключить.. А фиг,- говорит crontab, – нету у этого пользователя никаких заданий. То есть как это нету? -  начинаю офигевать я. Вот же в жалобе письмо процитировано. На всякий случай проверил почтовый лог. Всё как положено, было такое письмо, время совпадает, отправитель тоже. А кто ж его отправил, если в кроне задания нет?

Не залогинился же кто-то одновременно на обе машины и не запустил там вручную этот скрипт.. Но чтобы исключить такой вариант, запустил last. Не было никого на машине в это время. А проверка таки отработала и письмо отправила. Мистика какая-то..

Пошел искать на вторую машину. Скрипт там есть, тот же самый. Но.. в кроне его тоже нет. Тут-то у меня крыша и начала медленно съезжать.

Но далеко уехать не успела, разгадка нашлась довольно быстро. Как водится, её поиск предлагается в качестве домашнего задания.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Friday, November 12th, 2010 11:20 pm (UTC)
Время перевелось на час?
Saturday, November 13th, 2010 10:12 am (UTC)
Время перевелось уже давно, но это неважно. У данного пользователя на машине вообще кронтаба нету.
Friday, November 12th, 2010 11:28 pm (UTC)
Кто-то запустил crontab crontab - то есть, продублировал системный кронтаб для рута.
Saturday, November 13th, 2010 10:13 am (UTC)
Системного кронтаба на машине совсем нет, только отдельные пользовательские.
Friday, November 12th, 2010 11:45 pm (UTC)
А в /var/log/cron заглянуть, что там стартанулось в нужное время? И в /etc/cron.d не забыть, в тамошних скриптах указывается юзер, из-под коротого пускать и в crontab они не видны. Ну и самый брутальный вариант - если скрипт пускается из рутового кронтаба (вариант - из /etc/cron.daily или hourly) как su - user -c command
Saturday, November 13th, 2010 10:14 am (UTC)
Это солярка, у нее нет /etc/cron.d. И общесистемного кронтаба на этой машине тоже нет.
По логам - от этого пользователя не запускалось вообще ничего, а от других ничего похожего на этот скрипт.
Saturday, November 13th, 2010 05:32 am (UTC)
скрипт запускается от другого пользователя, а результат форвардится
Saturday, November 13th, 2010 10:15 am (UTC)
При этом достаточно сложно получить в почтовом логе запись об отправке письма именно этим пользователем. Не оно.
Saturday, November 13th, 2010 07:07 am (UTC)
пользовательский (а не системный) crontab?
Saturday, November 13th, 2010 10:16 am (UTC)
Я в пользовательские и смотрел. Общесистемного на этой машине вообще нет.
Saturday, November 13th, 2010 09:42 am (UTC)
ну саша, давайте будем предметнее?
менялась ли конфигцурация сети? покажите почтовые заголовки с обоих машин? давайте там посмотрим чем это письмо состряпано. покажите, скажем, системный кронтаб на предмет, например, su - user "/mega/script"? и прочие на предмет "/mega/script | mail mega@user"?
Saturday, November 13th, 2010 10:21 am (UTC)
Нет, конфигурация сети не менялась. Но машину несколько дней назад перезагружали, какие-то проблемы с питанием были. Вот после этого сообщения и начали дублироваться.

Письмо состряпано этим самым скриптом, я собственно скрипт и нашел по subject'у письма. Отправлено этим самым пользователем, это в почтовом логе видно и с заголовками совпадает.

Системного кронтаба вообще нет, только пользовательские. Но у этого конкретного пользователя кронтаба тоже нет. Когда-то был, но после переноса всех его скриптов на новую машину кронтам ему совсем удалили.

sudo на машине нету. su есть, но в логах нет никаких признаков аутентификации под этим пользователем в районе времени отправки письма.
Saturday, November 13th, 2010 11:33 am (UTC)
ну так в заголовках т чего? это два письма с разных машин или два письма с одной машины?
Saturday, November 13th, 2010 03:19 pm (UTC)
Два разных письма с разных машин. На это и была жалоба, просили только с одной оставить.
Saturday, November 13th, 2010 10:44 am (UTC)
детектив прям
Saturday, November 13th, 2010 11:01 am (UTC)
at?
Saturday, November 13th, 2010 03:21 pm (UTC)
Идея интересная, но тоже не оно. Проверки происходят периодически и каждый раз при срабатывании пользователь получал письма с обеих машин. Это ж замучаешься каждые пять минут через at запускать..
Monday, November 15th, 2010 09:22 am (UTC)
Ждем разгадки :)
Tuesday, November 16th, 2010 07:42 am (UTC)
Скрипт был зациклен. Делал проверку, если надо послыла письмо, потом засыпал на некоторое время и опять сначала. Запускался ищ /etc/init.d/. Машину перезагрузили, он и запустился.
Sunday, November 21st, 2010 01:42 am (UTC)
а как зацикленный скрипт посылал письма с разных машин?
Sunday, November 21st, 2010 12:56 pm (UTC)
На обеих машинах было по экземпляру этого скрипта. После переноса на новую машину работающий экземпляр на старой убили, но забыли убрать его запуск из /etc/init.d/*. После перезагрузки машины он и запустился снова.
Monday, November 22nd, 2010 08:42 am (UTC)
То есть зацикленность объясняет почему его нет в кроне, а автозупуск/перезагрузка - почему с двух машин.
Monday, November 22nd, 2010 10:03 am (UTC)
Ага
Tuesday, November 16th, 2010 02:56 am (UTC)
какой-то скрипт в цикле крутился?
Tuesday, November 16th, 2010 07:40 am (UTC)
Именно
Tuesday, November 16th, 2010 12:11 pm (UTC)
о, именно на эти грабли недавно наступил сам :)