Seite 1 von 1
					
				Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 01:37
				von snakemake
				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?
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 01:42
				von cofi
				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 
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 01:56
				von snakemake
				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?
 
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 02:17
				von 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.
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 02:30
				von snakemake
				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?
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Montag 20. Dezember 2010, 09:14
				von Pekh
				Mit einem Shellscript, das erst den Export-Befehl abgibt und dann Python startet.
			 
			
					
				Re: Inhalt einer Bash-Variable mittels Python ermitteln
				Verfasst: Dienstag 21. Dezember 2010, 12:52
				von Leonidas
				Oder halt gar nicht, weil sowas einfach eine schlechte Idee ist.