Seite 1 von 1
subprocess mit einem | teiler
Verfasst: Montag 30. November 2020, 20:22
von unique24
Hallo,
ich möchte die WLAN Qualität gerne auslesen.
Shell command ist:
"iwconfig wlan0 | grep -i quality"
aber ich bekomme das nicht zum laufen mit.
Code: Alles auswählen
result = subprocess.run(['iwconfig', 'wlan0', '| grep', '-i', 'quality'], stdout=subprocess.PIPE)
logger.info(result.stdout)
erhalte nur b' '
Wie kann ich den grep in den subprocess einbauen?
Danke!
Re: subprocess mit einem | teiler
Verfasst: Montag 30. November 2020, 20:32
von __blackjack__
@unique24: Das geht so nicht weil das ``|`` ein Syntaxelement einer Shell ist. Ich sehe aber auch nicht warum man ``grep`` verwenden sollte denn nach einer Zeichenkette suchen kann man auch in Python machen.
Re: subprocess mit einem | teiler
Verfasst: Montag 30. November 2020, 20:35
von unique24
Ja, stimmt ... mit 2 subprocesses würde es klappen:
Code: Alles auswählen
cmd = "iwconfig wlan0".split()
result = subprocess.run(cmd, stdout=subprocess.PIPE)
cmd = "grep -i quality".split()
result = subprocess.run(cmd, input=result.stdout, stdout=subprocess.PIPE)
werd es aber wohl noch mit python direkt machen!
Re: subprocess mit einem | teiler
Verfasst: Montag 30. November 2020, 20:35
von Sirius3
Gar nicht, weil solch ein grep ganz einfach mit Pythonmitteln nachprogrammiert werden kann:
Code: Alles auswählen
process = subprocess.Popen(['iwconfig', 'wlan0'], stdout=subprocess.PIPE, encoding="utf8")
for line in process.stdout:
if "quality" in line.lower():
print(line.strip())
Ansonsten müßte man mehrere Subprozesse über PIPEs zusammenbauen; man braucht das Zwischenergebnis nicht als String.
Re: subprocess mit einem | teiler
Verfasst: Montag 30. November 2020, 21:22
von unique24
Danke, ja so klappt das auch ganz gut!