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.
für eine Automatisierung probiere ich mit Python ein Kommandozeilenprogramm zu benutzen, dass mir die Konfguration eines VPN Clients sichert (Forticlient). Ich habe es mit Hilfe aus dem Forum geschafft, das Programm via Python mit administrativen Rechten zu starten. Die Konfiguration wird jedoch nicht exportiert und ich kann natürlich auch keine Ausgabe des Programmes sehen.
Wie kann ich bei einem Systemcall die Ausgabe umlenken oder Exit-Codes abfragen?
die Fehlerbehandlung in `is_admin` ist Quatsch. Welchen Fehler erwartest Du denn beim Aufruf von IsUserAnAdmin? Also, weg damit.
Dass es problematisch ist, einfach irgendeinen String den Du auch noch mit + zusammenstückelst, als Argument zu nehmen, wurde Dir schon gesagt.
Warum verwendest Du nicht subprocess? Das benutzt intern genauso ShellExecuteW.
@Sirius3: ich habe nichts gefunden, wie mit supbrocess runas benutzt werden kann.
Allerdings habe ich auch ein anderes Vorgehen vorgeschlagen: ein extra Skript, welches per runas gestartet wird, und DAS startet dann per subprocess das eigentliche Programm. Da kann man dann mal mit Rueckgabewerten und ggf. sogar STDIN/OUT/ERR arbeiten, aber ob das von Erfolg gekroent ist unter Linux ist auch fraglich.
danke nochmals für eure Inputs. Mit Subprocess habe ich es nicht hinbekommen. Es gibt zwar einige Beispiele, aber die elevation der UAC klappt damit irgendwie nicht. Dafür habe ich es mit dem ersten Ansatz hinbekommen. Hier noch der (rohe) Code, vielleicht hilft es ja sonst noch jemandem.
@Sirius3 Du hattest recht mit dem " ... noch mit + zusammenstückelst ..."
Wie ich schon mehrfach schrieb: du sollst mit ShellExecute einen PYTHON-INTERPRETER starten. Mit einem Skript als Argument. Und DAS startet dann mit subprocess das eigentliche Programm. Dann kannst du zumindest hoffen, dass du sowohl Returncode als auch ggf. Standardausgabe bekommst.