Shell-Script
cron 腳本找不到 logwatch 和 chkrootkit
我有一個可能與
PATH
變數有關的問題。這是我收到的一封關於在 cron 中執行的腳本的錯誤電子郵件:
Cron Daemon <mail.org> 05:08 (15 hours ago) to root, bcc: me mail: Null message body; hope that's ok tar: Fjerner indledende '/' fra medlemsnavne mail: Null message body; hope that's ok /home/user/bin/checkSystem: linje 16: chkrootkit: command not found mail: Null message body; hope that's ok /home/user/bin/checkSystem: linje 21: logwatch: command not found /home/user/bin/checkSystem: linje 22: logwatch: command not found /home/uesr/bin/checkSystem: linje 23: logwatch: command not found mail: Null message body; hope that's ok mail: Null message body; hope that's ok mail: Null message body; hope that's ok
我剛剛將腳本的所有者從使用者更改為 root
$ls -sail /home/user/bin/checkSystem 541784 4 -rwxr-x--- 1 root root 1235 aug 23 14:05 /home/user/bin/checkSystem
crontab -e
1 # Edit this file to introduce tasks to be run by cron. 2 # 3 # Each task to run has to be defined through a single line 4 # indicating with different fields when the task will be run 5 # and what command to run for the task 6 # 7 # To define the time you can provide concrete values for 8 # minute (m), hour (h), day of month (dom), month (mon), 9 # and day of week (dow) or use '*' in these fields (for 'any').# 10 # Notice that tasks will be started based on the cron's system 11 # daemon's notion of time and timezones. 12 # 13 # Output of the crontab jobs (including errors) is sent through 14 # email to the user the crontab file belongs to (unless redirected). 15 # 16 # For example, you can run a backup of all your user accounts 17 # at 5 a.m every week with: 18 # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ 19 # 20 # For more information see the manual pages of crontab(5) and cron(8) 21 # 22 # m h dom mon dow command 23 0 5 * * 1 /home/user/bin/checkSystem
這是腳本:
#!/bin/bash 2 date=`date +%d-%m-%y` 3 mail="mail.org" 4 5 ## rkhunter 6 #rkhunter --update 7 rkhunter --checkall --cronjob --report-warnings-only > rkhunter-check-$date.log 8 mail -A rkhunter-check-$date.log -s "rkhunter-check" $mail < /dev/null 2>&1 9 rm rkhunter-check-$date.log 10 tar -cf rkhunter-log-$date.tar /var/log/rkhunter.log 11 gzip rkhunter-log-$date.tar 12 mail -A rkhunter-log-$date.tar.gz -s "rkhunter-log" $mail < /dev/null 2>&1 13 rm rkhunter-log*.tar.gz 14 15 ## chkrootkit 16 chkrootkit > chkrootkit-$date.log 17 mail -A chkrootkit-$date.log -s "chkrootkit" $mail < /dev/null 2>&1 18 rm chkrootkit-$date.log 19 20 ## logwatch 21 logwatch --output html --detail High --range All > logwatch-all-$date.html 22 logwatch --output html --detail High --range Today > logwatch-today-$date.html 23 logwatch --output html --detail High --range Yesterday > logwatch-yesterday-$date.html 24 mail -A logwatch-all-$date.html -s "logwatch all" $mail < /dev/null 2>&1 25 mail -A logwatch-today-$date.html -s "logwatch today" $mail < /dev/null 2>&1 26 mail -A logwatch-yesterday-$date.html -s "logwatch yesterday" $mail < /dev/null 2>&1 27 rm -f logwatch-*.html 28 29 ## testing command 30 #echo "Just testing my sendmail gmail relay" | mail -s "Sendmail gmail Relay" mail.org
這是怎麼回事?
編輯:
(root@host)-(20:39:01)-(/home/user) $which logwatch /usr/sbin/logwatch (root@host)-(20:39:06)-(/home/user) $which chkrootkit /usr/sbin/chkrootkit (root@host)-(20:39:16)-(/home/user) $which rkhunter /usr/bin/rkhunter (root@host)-(20:39:22)-(/home/user) $
執行 cronjob 時,找不到“logwatch”。由於安裝了 logwatch,這可能意味著路徑中缺少它。您可以通過將“/usr/sbin”添加到 /etc/crontab 文件中的 PATH 來解決此問題。
如果您沒有編輯 /etc/crontab 的權限,另一種解決此問題的方法是直接在腳本中使用執行檔的完整路徑。