Как отключить сообщение "нет crontab для пользователя" в оболочке

Я делаю это в моем коде

ssh -q username@ip 'crontab -l' > $PWD/crontab.txt

Если сервер имеет crontabНет проблем, это работает. Но если на этом сервере нет crontab, я получаю сообщение no crontab for username,

Есть ли способ отключить это сообщение? Когда нет crontab, я не хочу, чтобы он что-либо выводил.

заранее спасибо

1 ответ

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

      CRON_LINE='0 0 1 * * /path/to/my_script.sh'
(crontab -u antiftw -l; echo "$CRON_LINE" ) | crontab -u antiftw -

Я попытался добавить обычные перенаправления (как упоминалось в комментариях) в конце второй строки, но они оба не подавляли сообщение:

      2> /dev/null
>> /dev/null 2>&1

Итак, после некоторого осмотра и тестирования я обнаружил, что причина, по которой отображается это сообщение, заключается в том, что в месте, где хранится crontab, нет файла. В Ubuntu 20.04 это:

      /var/spool/cron/crontabs/

Этот файл имеет имя пользователя, для которого мы создаем crontab:

/var/spool/cron/crontabs/root для пользователя root

или

/var/spool/cron/crontabs/antiftw для пользователя 'antiftw'

Итак, в случае, если мы хотим создать crontab для пользователя «antiftw», мы создаем пустой файл в этом месте, используя:

      touch /var/spool/cron/crontabs/antiftw

После этого важно дать этому файлу правильного владельца/группу и права доступа к файлу, иначе мы получим следующую ошибку при попытке изменить crontab с помощью команды crontab:

crontab: crontabs/antiftw: переименовать: операция не разрешена

Итак, мы выполняем следующие команды:

       chmod 600 /var/spool/cron/crontabs/antiftw
 chown antiftw:crontab /var/spool/cron/crontabs/antiftw

Примечание. Если мы хотим сделать это для пользователя root, это изменится на:

       chmod 600 /var/spool/cron/crontabs/root
 chown root:crontab /var/spool/cron/crontabs/root

В результате следующие разрешения:

-rw------- 1 антифтв кронтаб

И теперь, когда мы подготовили файл, мы можем просто добавить наши cron-строки, не получая сообщения. Чтобы проверить, правильно ли добавлены строки, мы можем использовать:

      crontab -l

Это создаст недавно добавленный cronline.

Другие вопросы по тегам