Seite 1 von 1
unix - user herausfidnen
Verfasst: Montag 6. November 2006, 10:49
von Mati
Hallo wie kann ichunter unix mit einem python befehl den user herausfinden und in einer variable speichern? mit os.system('whoami') kann ichs nicht speichern.....?
danke
Verfasst: Montag 6. November 2006, 11:40
von sape
Kenne mich mit *nix Systemen nicht aus.
Aber mal ne frage: Wo mit findest du das den mit *nix heraus? Falls du das weißt, dann brauchst du den befehl nur über das script auszuführen und den Output aufzufangen und dann auszuwerten.
lg
Verfasst: Montag 6. November 2006, 11:47
von birkenfeld
os.getuid() und os.geteuid() helfen. Damit bekommt man eine numerische ID, mit der man via pwd.getpwuid() u.a. den Usernamen herausfinden kann.
Re: unix - user herausfidnen
Verfasst: Montag 6. November 2006, 12:13
von gerold
Mati hat geschrieben:den user herausfinden
Hallo Mati!
Code: Alles auswählen
>>> import getpass
>>> print getpass.getuser()
Gerold
>>>
mfg
Gerold

Verfasst: Montag 6. November 2006, 13:14
von Y0Gi
os.environ['USER'] sollte immer (unter UNIX + Co.) den Namen des aktuellen Benutzers enthalten.
Verfasst: Montag 6. November 2006, 14:33
von BlackJack
Sollte, ist aber nicht immer der Fall. Da ist `getpass.getuser()` gründlicher:
Code: Alles auswählen
def getuser():
"""Get the username from the environment or password database.
First try various environment variables, then the password
database. This works on Windows as long as USERNAME is set.
"""
import os
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
user = os.environ.get(name)
if user:
return user
# If this fails, the exception will "explain" why
import pwd
return pwd.getpwuid(os.getuid())[0]
Verfasst: Montag 6. November 2006, 14:52
von Y0Gi
Yop, da hatte ich wohl was falsch in Erinnerung.
USER ist übrigens BSD-Konvention, LOGNAME ist System V-Konvention. Dass getpass() weitere prüft und zudem noch unter Windows funktionieren soll, macht es in der Tat zur ersten (und einzigen) Wahl.