Python Programm in Verbindung mit Linux Kommandos

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
noni
User
Beiträge: 4
Registriert: Freitag 3. Juli 2020, 13:51

Guten Tag,

nun, ich bin momentan dabei ein Programm zu schreiben, welches anhand des Types eines Servers dann entscheidet was er tun soll.
Nun wollte ich also dann diesen kleinen Code ausführen:

def test():
var ="Name des Servers"
if (os.system('hostname') == var):
print ("es ist Server 1")
else:
print ("es hat nicht funktioniert")

Zum Test hatte ich in die variable "var" meinen Hostnamen rein kopiert, also hätte es sinngemäß funktionieren müssen, jedoch kam ich immer in den else Zweig. Nachdem ich auch versuchte die Schritte einzeln nach zu verfolgen, kam ich auch nicht weiter.
Könnte mir da vielleicht einer weiter helfen?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Benutze lieber:

Code: Alles auswählen

import platform
platform.node()

import socket
socket.gethostname()
#edit: Die Klammern um die Bedingung beim if sind nutzlos, also weg damit :D
Zuletzt geändert von Jankie am Freitag 3. Juli 2020, 14:21, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Den Aufruf os.system niemals benutzen. Neben diversen Problemen die der hat, ist sein Rueckgabewert auch nicht, was du glaubst, was er ist.

Wenn du die Ausgabe eines Programms haben willst, benutz subprocess.run.

Und natuerlich ist Jankies Ansatz vorzuziehen, wenn die Informationen auch aus Python direkt kommen koennen.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

..und der Rückgabetyp ist auch nicht das was du erwartet hast. Der ist bei os.system ein int und zwar mit dem Wert 0. Also wäre deine Abfrage auch dahingehend nicht Richtig, weil du einen int mit einem string versuchst zu vergleichen, da kommt immer False.
Antworten