
Я создал скрипт под названием hello.sh
и он содержит следующее:
#!/bin/bash
printf "$( arp-scan --interface=eth0 --localnet )\n"
printf "test\n"
после того, как я сделал его исполняемым ( chmod o+x
) и запустил его ( ./hello.sh >> file.txt
), я получаю правильный вывод file.txt
(результат arp-сканирования и строку "test"). Но после добавления следующей строки в crontab -e
:
*/1 * * * * /path/to/hello.sh >> /path/to/file.txt
Я получаю следующий вывод:
тест тест тест
Как вы видите, часть возвращает пустую строку arp-scan
. Как заставить arpscan работать с cron?
Дополнительная информация:Все делается после входа в систему как sudo ( sudo -i
). arp-scan
требуется sudo. Я запускаю это на Fedora 20.
решение1
cron
работает с минимальной средой и сокращенным путем.
В скриптах, предназначенных для выполнения, всегда безопаснее всего cron
указывать полный путь ко всем командам или задавать в скрипте собственную переменную PATH.
Попробуйте добавить полный путь к arp-scan
команде.