Hallo Zusammen,
ich habe mir eine kleine Webseite gebaut und möchte jetzt gerne mit einem Shell Script eine Datei bearbeiten. Wenn ich das Script händisch anstoße funktioniert das auch sehr gut - Leider funktioniert nur der Cron Job dazu nicht komplett
also die Webseite liegt in /var/www/html/
dort gibt es einen ping.sh und eine switche.txt
root@ubuntu1804-lts-server:/var/www/html# ls -l
total 384
-rw-r--r-- 1 admin-rep admin-rep 585 Dec 18 09:53 index.php
-rw-r--r-- 1 root root 2105 Dec 19 14:22 ping.log
-rwxrwxrwx 1 root root 1264 Dec 19 14:22 ping.sh
-rw-r--r-- 1 root root 220 Dec 19 13:53 switche.txt
in der Ping.sh steht folgendes:
das ist der Crontab:
root@ubuntu1804-lts-server:/var/www/html# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
*/1 * * * * /var/www/html/ping.sh
Zum testen führt Cron das Script jetzt jede Minute aus:
root@ubuntu1804-lts-server:/var/www/html# grep -i cron /var/log/syslog
...
...
...
Dec 19 14:21:01 ubuntu1804-lts-server CRON[2286]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:21:01 ubuntu1804-lts-server CRON[2285]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:22:01 ubuntu1804-lts-server CRON[2291]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:22:01 ubuntu1804-lts-server CRON[2290]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:23:01 ubuntu1804-lts-server CRON[2297]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:23:01 ubuntu1804-lts-server CRON[2296]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:24:01 ubuntu1804-lts-server CRON[2303]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:24:01 ubuntu1804-lts-server CRON[2301]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:24:35 ubuntu1804-lts-server crontab[2307]: (root) LIST (root)
Dec 19 14:25:01 ubuntu1804-lts-server CRON[2309]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:25:01 ubuntu1804-lts-server CRON[2308]: (CRON) info (No MTA installed, discarding output)
Leider bekomme ich aber die for schleife im ping.sh nicht von cron ausgeführt. Alles davor funktioniert und händisch funktioniert alles. Deswegen vermute ich das bei dem "cat /var/www/html/switche.txt" ein Fehler auftritt der mir mein Script abbricht. Wie kann ich das Loggen um zu sehen was da los ist? Oder besser noch was mach ich falsch
Wie kann ich so einen fehler abfangen.
ich habe mir eine kleine Webseite gebaut und möchte jetzt gerne mit einem Shell Script eine Datei bearbeiten. Wenn ich das Script händisch anstoße funktioniert das auch sehr gut - Leider funktioniert nur der Cron Job dazu nicht komplett
also die Webseite liegt in /var/www/html/
dort gibt es einen ping.sh und eine switche.txt
root@ubuntu1804-lts-server:/var/www/html# ls -l
total 384
-rw-r--r-- 1 admin-rep admin-rep 585 Dec 18 09:53 index.php
-rw-r--r-- 1 root root 2105 Dec 19 14:22 ping.log
-rwxrwxrwx 1 root root 1264 Dec 19 14:22 ping.sh
-rw-r--r-- 1 root root 220 Dec 19 13:53 switche.txt
in der Ping.sh steht folgendes:
Code:
echo "Ping läuft">>/var/www/html/ping.log;
rm -f /var/www/html/aktualisierung_switche.txt
echo "oben: "`date +%d.%m.%Y_%H:%M`": "$?>>/var/www/html/ping.log;
echo "diese Zeile läuft noch mit in das Log">>/var/www/html/ping.log;
for i in $(cat /var/www/html/switche.txt); do
echo "diese Zeile landet schon nicht mehr im log ">>/var/www/html/ping.log;
IFS=';' read -ra array <<< "$i"
h=0
neuer_string=""
for j in "${array[@]}"
do
h=$(($h+1))
if (("$h"==1));
then
neuer_string=$j;
fi;
if (("$h"==2));
then
ip=$j;
neuer_string=$neuer_string";"$j
fi;
if (("$h"==3));
then
neuer_string=$neuer_string";"$j
fi;
if (("$h"==4));
then
neuer_string=$neuer_string";"$j
fi;
if (("$h"==5));
then
if ping -c 1 -w 1 $ip >/dev/null; then
neuer_string=$neuer_string";"`date +%d.%m.%Y_%H:%M`
else
neuer_string=$neuer_string";"$j
fi;
fi;
done
#echo $neuer_string;
echo $neuer_string >>/var/www/html/aktualisierung_switche.txt;
echo "schleife: "`date +%d.%m.%Y_%H:%M`": "$?>>/var/www/html/ping.log;
done;
mv /var/www/html/aktualisierung_switche.txt /var/www/html/switche.txt
echo "unten: "`date +%d.%m.%Y_%H:%M`": "$?>>/var/www/html/ping.log;
das ist der Crontab:
root@ubuntu1804-lts-server:/var/www/html# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
*/1 * * * * /var/www/html/ping.sh
Zum testen führt Cron das Script jetzt jede Minute aus:
root@ubuntu1804-lts-server:/var/www/html# grep -i cron /var/log/syslog
...
...
...
Dec 19 14:21:01 ubuntu1804-lts-server CRON[2286]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:21:01 ubuntu1804-lts-server CRON[2285]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:22:01 ubuntu1804-lts-server CRON[2291]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:22:01 ubuntu1804-lts-server CRON[2290]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:23:01 ubuntu1804-lts-server CRON[2297]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:23:01 ubuntu1804-lts-server CRON[2296]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:24:01 ubuntu1804-lts-server CRON[2303]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:24:01 ubuntu1804-lts-server CRON[2301]: (CRON) info (No MTA installed, discarding output)
Dec 19 14:24:35 ubuntu1804-lts-server crontab[2307]: (root) LIST (root)
Dec 19 14:25:01 ubuntu1804-lts-server CRON[2309]: (root) CMD (/var/www/html/ping.sh)
Dec 19 14:25:01 ubuntu1804-lts-server CRON[2308]: (CRON) info (No MTA installed, discarding output)
Leider bekomme ich aber die for schleife im ping.sh nicht von cron ausgeführt. Alles davor funktioniert und händisch funktioniert alles. Deswegen vermute ich das bei dem "cat /var/www/html/switche.txt" ein Fehler auftritt der mir mein Script abbricht. Wie kann ich das Loggen um zu sehen was da los ist? Oder besser noch was mach ich falsch
Wie kann ich so einen fehler abfangen.