Wo kann man Sudo in subprocess.run setzen?Python

Python-Programme
Anonymous
 Wo kann man Sudo in subprocess.run setzen?

Post by Anonymous »

Ich versuche, einen Bash -Befehl aus meiner Python -Anwendung aufzurufen, um das Hintergrundlicht auf meinem Touchscreen zu ändern. Die Python -Anwendung wird auf meinem Raspberry Pi (Rasbian/Stretch) ausgeführt. Aber wie kann ich in meiner Python -Anwendung sudo Skripte? (Ich weiß, dass es mehrere Threads gibt, die darüber sprechen, beispielsweise mit Sudo mit Python -Skript, aber ich verstehe nicht, wie es in der Praxis geht?)

Code: Select all

#!/usr/bin/env python3
import subprocess
import time
import sys

# read arguments from the run command:
# idle time before dim (in seconds)
idleTimeBeforeDimMS = int( sys.argv[1] )*1000

# brightness when dimmed (between 0 and 255)
brightnessDimmed = int( sys.argv[2] )
brightnessFull = 255

def get(cmd):
# just a helper function
return subprocess.check_output(cmd).decode("utf-8").strip()

isIdle0 = False
stateChanged = False
timeIntervalToWatchChangesS = 100 / 1000

while True:
time.sleep( timeIntervalToWatchChangesS )

currentIdleTimeMS = int( get("xprintidle") )

isIdle = currentIdleTimeMS > idleTimeBeforeDimMS
stateChanged = isIdle0 != isIdle

if isIdle and stateChanged:
# idling
bashCommand = "echo 50 > /sys/class/backlight/rpi_backlight/brightness"
subprocess.run(['bash', '-c', bashCommand])
elif not isIdle and stateChanged:
# active
bashCommand = "echo 255 > /sys/class/backlight/rpi_backlight/brightness"
subprocess.run(['bash', '-c', bashCommand])

# set current state as initial one for the next loop cycle
isIdle0 = isIdle
Wenn ich das Skript direkt ausführe, erhalte ich einen Fehler mit meinem Bash -Befehl: bash:/sys/class/backlight/rpi_backlight/Helligkeit: Berechtigung verweigert . Das ist in Ordnung, ich verstehe, dass mir der sudo -Part fehlt, aber wo soll ich es setzen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post