aus Python bash per sudo starten

  • Hallo,

    ich möchte aus python heraus ein bash per sudo starten. Komme da aber nicht weiter. Hat jemand einen Tip für mich?

    Bash:

    Bash
    #!/bin/bash
    date >> /home/pi/welcome/welcome.log && echo "alarm aus" >> /home/pi/welcome/welcome.log  && echo " " >> /home/pi/welcome/welcome.log

    Eleganter wäre es natürlich wenn Datum und Text in einer Zeile wären..

    pyhton:

    Python
    #!/usr/bin/python
    import os
    import time
    import subprocess
    subprocess.call("['sudo']/home/pi/welcome/welcomelog_aus.sh")


    habe von dem subprocess diverse varianten getestet, ohne sudo läuft er fehlerfrei durch, schreibt jedoch aufgrund Berechtigungsproblemen nicht ins log :(

    Grüße Thorsten

    Einmal editiert, zuletzt von Thorstensd (10. August 2017 um 19:18)

  • Hallo,

    warum willst du das per Umweg über die Bash machen? Öffne die Datei doch mit Python und schreib' rein. Ist wohl einfacher...

    Zitat

    subprocess.call("['sudo']/home/pi/welcome/welcomelog_aus.sh")


    Das ist vom Syntax her ziemlich falsch... du übergibst einen String. Bei Befehlen mit mehreren Argumenten - was du bei `sudo irgendwas` zwangsläufig hast - werden die Argumente als Liste von Strings erwartet.

    Gruß, noisefloor

  • na um ehrlich zu sein, mache ich dass über den Umweg aus dem gleichen Grund warum ich Frage, wie ich den subprocess mit sudo abschicke - weil ich Python Anfänger bin nicht weiss wie es geht ;)
    Weshalb ich auch leider nicht viel der Info Liste von Strings anfangen kann.

    Einmal editiert, zuletzt von Thorstensd (10. August 2017 um 20:48)

  • Hallo,

    das Öffnen und Schreiben in Dateien ist im offiziellen Python-Tutorial erklärt - falls du das nicht gelesen hast, würde es sich da sehr anbieten. Ist für Anfänger eine sehr empfehlenswerte Lektüre.

    Zu subprocess: schau' mal in der Doku zum `subprocess` Modul die Beispiele bei `subprocess.call()` (bis Python 3.4) bzw. `subprocess.run() (ab Python 3.5) an.

    BTW: wieso brauchst du für eine Logdatei, die im Homeverzeichnis liegt, Root-Rechte, um da rein zu schreiben? Das sollte man auch einfacher über eine entsprechende Gruppe mit den entsprechenden Rechten regeln können.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!