unix - user herausfidnen

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
Mati
User
Beiträge: 68
Registriert: Dienstag 6. Juni 2006, 16:54

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
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
Benutzeravatar
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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mati hat geschrieben:den user herausfinden
Hallo Mati!

Code: Alles auswählen

>>> import getpass
>>> print getpass.getuser()
Gerold
>>>
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

os.environ['USER'] sollte immer (unter UNIX + Co.) den Namen des aktuellen Benutzers enthalten.
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]
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Antworten