Python Windows CMD

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
undercover90
User
Beiträge: 2
Registriert: Sonntag 13. März 2016, 09:11

Hallo Leute. Stehe immer noch vor dem Problem, über Python Windows CMD-Befehle auszuführen, für die Admin-Rechte erforderlich sind. Hat hier jemand diesbezüglich Erfahrungen?
Mein Ansatz sah folgendermaßen aus:

Code: Alles auswählen

import subprocess as sp
prog = sp.Popen(['runas', '/noprofile', '/user:Administrator', 'cmd'])
Eine automatische Übergabe des Passworts an runas scheiterte leider. Komme ich um eine Batchdatei nicht herum? Oder lässt sich dies auch mit Python realisieren ohne das Passwort manuell einzugeben?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das Passwort solltest du aus Sicherheitsgründen nicht übergeben können, ob mit Python oder Batch.
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Wenn man die Sicherheit außen vor lässt.. dann gänge das mittels expect
Expect für Python wäre Pexpect https://github.com/pexpect/pexpect

Das Passwort steht dann aber irgendwo im Klartext.

Wie handelt man sowas eigentlich in der Produktivwelt?
Automatisierte Jobs die eben Rechte brauchen. Irgendwie muss man ja ein Passwort übergeben.
undercover90
User
Beiträge: 2
Registriert: Sonntag 13. März 2016, 09:11

pexpect.spawn and pexpect.run() are not available on Windows, as they rely on Unix pseudoterminals
(ptys). Cross platform code must not use these.
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Hab schnell eben google bemüht. Die Windowsalternative heißt dann wohl Wexpect.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

sebastian0202 hat geschrieben:Wie handelt man sowas eigentlich in der Produktivwelt?
Automatisierte Jobs die eben Rechte brauchen. Irgendwie muss man ja ein Passwort übergeben.
Nein muss man nicht. Du sagt dem Betriebssystem einfach dass es unter Bedingung X einen Prozess unter einem bestimmten User starten soll. Windows unterscheidet sich hier auch nicht von anderen Betriebssystemen.

Der richtige Ansatz wäre auch hier die Funktionalität die weitere Rechte benötigt in einen solchen Hintergrundprozess auszugliedern, den man dann über eine API anspricht. Ansonsten muss halt irgendein Mensch jedesmal sein Passwort eintippen, kann für bestimmte Sachen auch OK sein.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Unter Linux kann man sowas mit der /etc/sudoers machen. Da kann man festlegen, das verschiedene Skripte ohne Passwort ausgeführt werden können.
Antworten