Python Skript funktioniert normal, nicht aber über Cronjob

Zerstoerer

Lieutenant
Registriert
Okt. 2010
Beiträge
685
Hallo zusammen,

aktuell sieht bei mir die Lage so aus: Ich habe einen Odroid-C2 und betreibe darauf in meinem Netzwerk einen Nextcloudserver. Da ich keinen Zugriff auf den Router habe, läuft der externe Zugriff über eine Weiterleitung von einem VPN-Server von mir. Nun ist mein Problem, dass normal der Internetzugriff bei mir immer nach 30 Minuten Nichtbenutzung automatisch deaktiviert wird, danach muss ich mich über eine Seite im Netzwerk wieder anmelden. Damit dies automatisch funktioniert, habe ich mir folgendes Skript geschrieben(Python):
Code:
from twill.commands import *
go('https://Loginseite.de')

fv("1","loginid","Username")
fv("1","password","Password")
submit("5")
Ein weiteres Skript überprüft dafür erstmal, ob eine Verbindung überhaupt besteht:
Code:
#!/usr/bin/env python

import os
hostname = "google.de"
print 'Starting Ping test'
response = os.system("ping -c 1 " + hostname)
if response == 0:
        print hostname, 'is up!'
        print 'Nothing to do!'
else:
        print hostname, 'is down!'
        print 'shutting down VPN...'
        os.system("sudo service openvpn stop")
        print 'running login script...'
        os.system("python rz_uni_login.py")
        print 'starting VPN again...'
        os.system("sudo service openvpn start")
print '\n\n'

Im Grunde überprüfe ich immer erstmal, ob es eine Internetverbindung besteht, wenn nicht, deaktiviere ich den VPN, starte mein 1. Skript und starte dann den VPN wieder.
Das Gute ist bisher, wenn ich mein zweites Skript normal per
Code:
python testconnection.py
ausführe, funktioniert es ohne Probleme. Allerdings will ich das ja automatisch prüfen, d.h. ich lasse das bisher über Cronjob jede 5 Minuten ausführen, sodass die Internetverbindung immer geprüft wird.
Merkwürdigerweise funktioniert es über Cronjob nicht. Ich sehe, dass es normal ausgeführt wurde, da die LOG-Datei ganz normal alle Ausgaben erstellt, aber leider funktioniert der Login damit nicht.
Kann mir vielleicht einer helfen, das Problem hier zu finden?

Wäre dankbar für ein paar Tipps.
 
- darf der nutzer, in dessen cron du den aufruf zugefügt hast, "sudo" ohne passwort benutzen?
- du müsstest bei os.system immer den returnwert auswerten, um zu schauen, ob dein kommando erfolgreich war.
- versuchs mal bei os.system("python rz_uni_login.py") mit dem absoluten pfad zum script
 
Das Skript wird im Crontab von root ausgeführt, daran sollte es eigentlich nicht liegen. Aber der Vorschlag für den absoluten Pfad hat geholfen. Wahrscheinlich wurde wirklich das Login Skript durch den Root User nicht gefunden.

Also danke für deine Hilfe!
 
ich habs geahnt :) wenn du dein script über cron ausführen lässt, hat es sein eigenes environment, d.h. das current working directory ist irgendwo anders und dein 2. script wird nicht gefunden.
 
Zurück
Oben