Inhalt einer Bash-Variable mittels Python ermitteln

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
snakemake
User
Beiträge: 32
Registriert: Sonntag 6. Juni 2010, 19:20

Hallo,

ich möchte in meinem Python-Skript den Inhalt der Bash-Variable "$HOSTNAME" bekommen. Ich kann natürlich den Hostnamen auch mithilfe von socket.gethostname() ermitteln, aber ich würde gerne wissen, wie es mittels der Bashvariable funktioniert. Da ich kein bash kann, weiß ich nicht, wie man an den Inhalt einer Bash-Variable kommt, ohne sie auszugeben (und ohne das Pythonskript mittels bash-Skripten zu starten).

Kann mir jemand helfen?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Bei Shellvariablen redet man im allgemeinen von Umgebungsvariablen, damit wird man dann im os Modul fuendig: http://docs.python.org/library/os.html#os.getenv
snakemake
User
Beiträge: 32
Registriert: Sonntag 6. Juni 2010, 19:20

Ich kriege jedoch immer None zurück. Habe alle möglichen Varianten ausprobiert:

Code: Alles auswählen

>>> import os                                                                                                    
>>> ret = os.getenv("HOSTNAME")
>>> ret                                                                                                          
>>> print ret
None                                                                                                             
>>> ret = os.getenv("hostname")                                                                    
>>> ret
>>> ret = os.getenv("$HOSTNAME")                                                         
>>> ret                                                                                                          
>>>  
Mache ich etwas falsch?
BlackJack

@snakemake: 'HOSTNAME' wäre richtig. Wenn Du da `None` zurück bekommst, dann ist die Variable halt nicht gesetzt. Wenn sie in der Shell vorhanden ist, von der aus Du Python gestartet hast, dann wurde sie nicht exportiert und ist nur lokal in der Shell definiert.
snakemake
User
Beiträge: 32
Registriert: Sonntag 6. Juni 2010, 19:20

Ok. Mithilfe von export HOSTNAME könnte ich sie exportieren. Nun kommt aber ein neues Problem: Ich müsste, bevor ich mein Pythonskript starte, die Variable exportieren, damit ich dann im Python-Skript die Variable mit getenv aufrufen kann. Rufe ich export HOSTNAME im Pythonskript auf und nicht vor dem Start des Skripts, macht es natürlich keinen Sinn, da die bash den Python-Interpreter bereits als Kind ohne exportierten Variablen aufgerufen hat.

Wie kriege ich es hin, ohne vorher vor dem Skriptstart exp... aufrufen zu müssen?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Mit einem Shellscript, das erst den Export-Befehl abgibt und dann Python startet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Oder halt gar nicht, weil sowas einfach eine schlechte Idee ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten