
Tengo un problema que probablemente tenga algo que ver con la PATH
variable.
Este es un correo electrónico que recibí con un error sobre un script que se ejecuta en 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
Acabo de cambiar el propietario del script de usuario a 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
Aquí está el guión:
#!/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
¿Cual es el trato?
EDITAR:
(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)
$
Respuesta1
Cuando se ejecuta el cronjob, no se puede encontrar 'logwatch'. Dado que logwatch está instalado, esto probablemente significa que falta en la ruta. Puede solucionar este problema agregando '/usr/sbin' a la RUTA en el archivo /etc/crontab.
Otra forma de solucionar este problema si no tiene privilegios para editar /etc/crontab es simplemente usar la ruta completa al ejecutable directamente en el script.