Aktualisierung: Ich habe alle Methoden überprüft, alle funktionieren.
1:
Passwort mit getpass module
anfordern was im Wesentlichen die Eingabe des Benutzers verbirgt und dann den Befehl sudo in Python ausführt.
import getpass
import os
password = getpass.getpass()
command = "sudo -S apt-get update" #can be any command but don't forget -S as it enables input from stdin
os.system('echo %s | %s' % (password, command))
2:
import getpass
import os
password = getpass.getpass()
command = "sudo -S apt-get update" # can be any command but don't forget -S as it enables input from stdin
os.popen(command, 'w').write(password+'\n') # newline char is important otherwise prompt will wait for you to manually perform newline
HINWEIS für die obigen Methoden:
Das Feld, in das Sie das Passwort eingeben, erscheint möglicherweise nicht im ipythonnotebook. Es erscheint im Terminalfenster auf einem Mac, und ich stelle mir vor, dass es in einer Befehlsshell auf einem PC erscheint. Sogar die Ergebnisdetails werden im Terminal angezeigt.
3:
Ihr Passwort können Sie unter mypasswordfile
hinterlegen file und geben Sie einfach cell :
!sudo -S apt-get install blah < /pathto/mypasswordfile # again -S is important here
Ich würde diese Methode bevorzugen, wenn ich die Ausgabe des Befehls in Jupyter Notebook selbst anzeigen möchte.
Referenzen:
-
Passwort im IPython-Notebook anfordern
-
https://docs.python.org/3.1/library/getpass.html
- Sudo mit Python-Skript verwenden
Sie können Python-Variablen von einem Notebook an die Shell übergeben, ohne die os
zu importieren oder subprocess
Module mithilfe der {varname}-Syntax (z. B. dieses coole Blog).
Wenn Sie in Python ein Passwort und eine Befehlsvariable definiert haben (siehe Antwort von Suparshva), können Sie diesen Einzeiler ausführen:
!echo {password}|sudo -S {command}
Das Ausrufezeichen weist Jupyter an, es in der Shell auszuführen, dem echo
Der Befehl erhält dann das echte Passwort (z. B. 'funkymonkey') aus der Variablen namens password
und leiten Sie es dann in den sudo'd command
Variable (das ist ein String, der einen Shell-Befehl beschreibt, z. B. 'apt-get update').
Sie können
subprocess.Pope(['sudo', 'apt-get', 'install', 'bla'])
Wenn Sie die Python-Syntax vermeiden möchten, können Sie Ihre eigene Zellenmagie definieren, die das für Sie erledigt (z. B. %sudo apt-get install bla
).