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
unix - user herausfidnen
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
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
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
os.getuid() und os.geteuid() helfen. Damit bekommt man eine numerische ID, mit der man via pwd.getpwuid() u.a. den Usernamen herausfinden kann.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Mati!Mati hat geschrieben:den user herausfinden
Code: Alles auswählen
>>> import getpass
>>> print getpass.getuser()
Gerold
>>>
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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]
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.
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.