Prüfen ob python Script über Shell gestartet wurde
Verfasst: Freitag 10. Juni 2016, 10:06
Hallo!
Ich habe ein Python Script für die Version2.7 geschrieben, welches mit subprocess und Popen ein Ansible-Skript startet. Dieses Script kann manuelle über die bash gestartet werden und ich verwende es auch in einem cronjob. Um den Info-Overhead, den Ansible beim Ausführen an die Shell ausgibt, habe ich das alles etwas kanalisiert und schreibe die Ausgaben der Ansibleskript-Ausführung in eine Variable, die ich dann auswerte um eine mögliche Fehlermeldung daraus zu machen.
Nun ist es aber so, dass es bei der Ausführung als cronjob immer zum Fehler führt, weil ddei if-bedingung offenbar nur funktioniert, wenn eine aktive bash dieses Skript ausführt. Wie kann ich bei der Ausführung des Skriptes prüfen, ob es als cronjob läuft oder vom user gestartet wurde? Damit habe ich dann die Möglichkeit die Prüfung zu ändern und Fehler evtl als log-Datei zu schreiben.
VG niesel
Ich habe ein Python Script für die Version2.7 geschrieben, welches mit subprocess und Popen ein Ansible-Skript startet. Dieses Script kann manuelle über die bash gestartet werden und ich verwende es auch in einem cronjob. Um den Info-Overhead, den Ansible beim Ausführen an die Shell ausgibt, habe ich das alles etwas kanalisiert und schreibe die Ausgaben der Ansibleskript-Ausführung in eine Variable, die ich dann auswerte um eine mögliche Fehlermeldung daraus zu machen.
Code: Alles auswählen
ansible_command = 'ansible-playbook /home/devops/ansible/playbooks/info/script.yml -l ' + env_choice
extra_vars = ' --extra-vars "ip=' + ip + ' date=' + check_date + ' path=' + path + '"'
ansible_command += extra_vars
proc = subprocess.Popen(ansible_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)
output = proc.communicate()[0]
if "ok:" not in output:
print "\033[1;41mFehler bei XY {0} \033[0m"\
.format(ip)
print output
VG niesel