Linux: 1 skript funktioniert nicht unter cron(tab)
guten tag
ich hatte vor einigen wochen das problem, datenpakete an einen linux-server zu senden, und dieser sollte sie in empfang nehmen, auspacken und verteilen.
den ersten teil kann ich nun mit eurer tatkräftigen mithilfe mit winscp ausführen. danke nochmals.
hier nur mal ganz kurz die lösung:
rem wenn mehrere commandos (besonders mehrere options!) nötig sind
rem "%ProgramFiles(x86)%\WinSCP\winscp.exe" /console /script=f:\_zyx.txt
rem ansonsten so:
"%ProgramFiles(x86)%\WinSCP\winscp.exe" /console /command "option confirm off" "open sftp://zzz:xxx@yyy.de/" "put f:\zzz\%1-int.arj" "exit"
so. soweitsogut. alles löpt primstens!
bei der diskussion dazu, wurde schnell klar, daß man von aussen nicht root-befehle auf einem linuxserver ausführen kann, wenn man sich von aussen nicht als root anmelden kann. und bitte nicht vergessen: alles automatisiert.
so. nun habe ich in die crontab DAS hier eingetragen:
10 7,8,9,10,11,12,13,20 * * * root /-scripte/__auspack_und_verteil__.sh
das script soll alle 10 minuten in der oben angegebenen stunde ablaufen!
__auspack_und_verteil__.sh
arjort=/home/zyx
if [ -f "$arjort/kg-int.arj" ] ; then kurz=123 ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then lang=123456789 ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then arj e -y $arjort/"$kurz"-int.arj /home/"$lang".yyy.de/data/"$kurz" ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then /root/-scripte/_ch_"$lang".sh ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then imoil=empfaenger1@irgendwo1.de ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then imoila=empfaenger2@irgendwo2.de ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then cat /root/-scripte/__email_ist_oben__ | mail -s "[$lang.yyy.de] Aktualisierung Ihres Internetkataloges" $imoil ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then cat /root/-scripte/__email_ist_oben_admin__ | mail -s "[$lang.yyy.de] Aktualisierung des Internetkataloges" $imoila ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then sleep 60 && rm -f $arjort/"$kurz"-int.arj ; fi
wenn ich das über den midnight commander aufrufe (also entere), dann läuft es sauber ab. macht alles, was da oben drinsteht: auspacken, arj löschen, 2x emails versenden mit den gewünschten inhalten usw usw
habe ich das in crontab eingetragen, passiert nichts.
"nichts", ich kann nichts sehen. nur in einer log steht was drin! \var\log\messages
Sep 2 13:10:01 h1887032 /USR/SBIN/CRON[16320]: (root) CMD (/-scripte/__auspack_und_verteil__.sh)
also hat crontab es aufgerufen, und auch ausgeführt, aber ohne ergebnis?
...habe bestimmt was übersehen....
aber was?
danke euch mitlesern, auch wenn Ihr Euch durch das o.g. shellskript durchgequält habt. es entspricht sicherlich nicht dem -allgemeinen- modernen design. aber ich kanns nicht besser
und das wichtigste: wenn ich es per hand anstubbse, läuft's ja!
viele grüße vom
klaus
,der zur zeit in einem hotelzimemr in erfur(ch)t(h) sitzt und arbeitet
ich hatte vor einigen wochen das problem, datenpakete an einen linux-server zu senden, und dieser sollte sie in empfang nehmen, auspacken und verteilen.
den ersten teil kann ich nun mit eurer tatkräftigen mithilfe mit winscp ausführen. danke nochmals.
hier nur mal ganz kurz die lösung:
rem wenn mehrere commandos (besonders mehrere options!) nötig sind
rem "%ProgramFiles(x86)%\WinSCP\winscp.exe" /console /script=f:\_zyx.txt
rem ansonsten so:
"%ProgramFiles(x86)%\WinSCP\winscp.exe" /console /command "option confirm off" "open sftp://zzz:xxx@yyy.de/" "put f:\zzz\%1-int.arj" "exit"
so. soweitsogut. alles löpt primstens!
bei der diskussion dazu, wurde schnell klar, daß man von aussen nicht root-befehle auf einem linuxserver ausführen kann, wenn man sich von aussen nicht als root anmelden kann. und bitte nicht vergessen: alles automatisiert.
so. nun habe ich in die crontab DAS hier eingetragen:
10 7,8,9,10,11,12,13,20 * * * root /-scripte/__auspack_und_verteil__.sh
das script soll alle 10 minuten in der oben angegebenen stunde ablaufen!
__auspack_und_verteil__.sh
arjort=/home/zyx
if [ -f "$arjort/kg-int.arj" ] ; then kurz=123 ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then lang=123456789 ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then arj e -y $arjort/"$kurz"-int.arj /home/"$lang".yyy.de/data/"$kurz" ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then /root/-scripte/_ch_"$lang".sh ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then imoil=empfaenger1@irgendwo1.de ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then imoila=empfaenger2@irgendwo2.de ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then cat /root/-scripte/__email_ist_oben__ | mail -s "[$lang.yyy.de] Aktualisierung Ihres Internetkataloges" $imoil ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then cat /root/-scripte/__email_ist_oben_admin__ | mail -s "[$lang.yyy.de] Aktualisierung des Internetkataloges" $imoila ; fi
if [ -f "$arjort/"$kurz"-int.arj" ] ; then sleep 60 && rm -f $arjort/"$kurz"-int.arj ; fi
wenn ich das über den midnight commander aufrufe (also entere), dann läuft es sauber ab. macht alles, was da oben drinsteht: auspacken, arj löschen, 2x emails versenden mit den gewünschten inhalten usw usw
habe ich das in crontab eingetragen, passiert nichts.
"nichts", ich kann nichts sehen. nur in einer log steht was drin! \var\log\messages
Sep 2 13:10:01 h1887032 /USR/SBIN/CRON[16320]: (root) CMD (/-scripte/__auspack_und_verteil__.sh)
also hat crontab es aufgerufen, und auch ausgeführt, aber ohne ergebnis?
...habe bestimmt was übersehen....
aber was?
danke euch mitlesern, auch wenn Ihr Euch durch das o.g. shellskript durchgequält habt. es entspricht sicherlich nicht dem -allgemeinen- modernen design. aber ich kanns nicht besser
und das wichtigste: wenn ich es per hand anstubbse, läuft's ja!
viele grüße vom
klaus
,der zur zeit in einem hotelzimemr in erfur(ch)t(h) sitzt und arbeitet
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248063
Url: https://administrator.de/forum/linux-1-skript-funktioniert-nicht-unter-crontab-248063.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
3 Kommentare
Neuester Kommentar
Hi,
Hatte letztens ein ähnliches Problem. Bei mir waren die Rechte für das Versenden von Mails schuld. Der cronjob wurde als User ausgeführt, welcher keine Mails versenden durfte.
Kontrollieren mal unter welchem User der cronjob gestartet wird und ob der User auch die passenden Rechte (sowohl auf den Ordner zum Entpacken als auch die Rechte zum Senden der Mails) hat.
Eventuell auch arjort=/home/zyx durch arjort=$HOME ersetzen.
mfg
Cthluhu
Hatte letztens ein ähnliches Problem. Bei mir waren die Rechte für das Versenden von Mails schuld. Der cronjob wurde als User ausgeführt, welcher keine Mails versenden durfte.
Kontrollieren mal unter welchem User der cronjob gestartet wird und ob der User auch die passenden Rechte (sowohl auf den Ordner zum Entpacken als auch die Rechte zum Senden der Mails) hat.
Eventuell auch arjort=/home/zyx durch arjort=$HOME ersetzen.
mfg
Cthluhu
Hi,
mit den Rechten wird es nichts zutun haben, da das Script laut Crontab ja als root gestartet wird.
So sieht man es dann ja auch in dem Log.
Du kannst dir aber ja auch ein eigenes Log erstellen indem du in dein Script (testweise) malin paar echos schreibst und deren Ausgabe in eine Datei umleitets.
Darüber hinaus vermute ich das in der Umgebung von Cron die Pfade anders sind und deswegen dein Programm "arj" einfach nicht gefunden wird.
Und zu guter letzt, so wird dein Cronjob nur zu jeder "10.Minute der Stunde" ausgeführt, also 7:10, 8:10, 9:10, ...
Probier es mal so:
Schönen Gruß
~Arano
(der gerade in der Bahn sitzt und tippt )
mit den Rechten wird es nichts zutun haben, da das Script laut Crontab ja als root gestartet wird.
So sieht man es dann ja auch in dem Log.
Du kannst dir aber ja auch ein eigenes Log erstellen indem du in dein Script (testweise) malin paar echos schreibst und deren Ausgabe in eine Datei umleitets.
echo "checkpoint-1" >>/root/test.log
Darüber hinaus vermute ich das in der Umgebung von Cron die Pfade anders sind und deswegen dein Programm "arj" einfach nicht gefunden wird.
Und zu guter letzt, so wird dein Cronjob nur zu jeder "10.Minute der Stunde" ausgeführt, also 7:10, 8:10, 9:10, ...
Probier es mal so:
*/10 7,8,9,10,11,12,13,20 * * * root "deinScript"
Schönen Gruß
~Arano
(der gerade in der Bahn sitzt und tippt )