String übernehmen von einem Konsolenbefehl os.system()

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Benutzeravatar
Mesquita
User
Beiträge: 15
Registriert: Montag 7. Januar 2019, 15:22

Hallo User,

ich habe mich heute hier angemeldet, da ich ein "Problem" + zwei Fragen habe und um Hilfe/Tipps bitten möchte.
Problem: Ich beginne gerade erst mich in Python einzuarbeiten ;-)
Fragen: Mein aktuelles Projekt ist ein Skript für einen Raspberry Pi B+. Dabei muss ich die aktuelle öffentliche IP Adresse des Providers ermitteln und als String auswerten. Der Konsolenbefehl zur Ermittlung lautet:

Code: Alles auswählen

curl -B4 http://checkip4.spdyn.de
Somit war mein Gedanke mittels:

Code: Alles auswählen

ip=(os.system("curl -B4 http://checkip4.spdyn.de")) oder
ip=(os.system('wget -4 -O - http://myip.dnsomatic.com/ 2> /dev/null'))
die IP als String auszulesen. Es geht nur leider nicht. Bei print (ip) ist das Ergebnis immer "0". Was mache ich falsch? Gibt es eine Möglichkeit einen String im RAM o.ä. abzulegen, das Programm zu schließen (Raspi läuft weiter), das Skript wieder zu starten und den Wert wieder einzulesen (Zugriffe auf SDCARD minimieren)?

Thomas
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Was Du brauchst ist subprocess.run:

Code: Alles auswählen

result = subprocess.run(["curl", "-B4", "http://checkip4.spdyn.de"], capture_output=True)
ip = result.stdout
Besser ist es aber, kein externes Programm zu benutzen, sondern das ganze mit Python-Mitteln, z.B. requests-Modul zu erledigen:

Code: Alles auswählen

import requests
ip = requests.get("http://checkip4.spdyn.de").text
Benutzeravatar
Mesquita
User
Beiträge: 15
Registriert: Montag 7. Januar 2019, 15:22

Danke für die Info. Das Modul requests muss ich nachinstallieren. Wie kann ich dies unter dem Raspi machen?

Thomas
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du mal.... gegoogelt? Wie man Python Module installiert? Das ist wirklich ausfuehrlichst beschrieben, auch und gerade fuer den Raspberry PI. Wenn du dabei auf Probleme stoesst, kannst du natuerlich gerne fragen. Aber unsere Aufgabe ist eher nicht, das Internet hier rein zu kopieren...
Benutzeravatar
Mesquita
User
Beiträge: 15
Registriert: Montag 7. Januar 2019, 15:22

Hallo _deets_
Deine Orientierung habe ich vernommen und "an"genommen. Im Vorfeld war ich auf Recherche, kam aber nicht zum Abschluss. Jetzt ist es mir klar auch warum. Ich suchte nicht gezielt nach Debian und war immer bei der Installation unter Windows. Mir hätte schon der Modulname python-requests geholfen. Ich wünsche Dir einen schönen Abend.
Thomas
Antworten