GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von sudo in der Zelle des Jupyter-Notebooks

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 :

ein

!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:

  1. Passwort im IPython-Notebook anfordern

  2. https://docs.python.org/3.1/library/getpass.html

  3. 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 ).


Linux
  1. Führen Sie einen Sudo-Befehl aus und geben Sie das Passwort in derselben Zeile an?

  2. Befehl bei Verwendung von sudo nicht gefunden

  3. Erlauben der automatischen Befehlsausführung als root unter Linux mit SSH

  4. Stellen Sie über die Befehlszeile eine Verbindung zu MySQL her, ohne das Root-Passwort zu verwenden?

  5. Linux-Befehl gefunden, aber bei Verwendung von sudo nicht gefunden

So führen Sie den Sudo-Befehl ohne Passwort aus

Sudo-Befehl unter Linux

Zwingen Sie Benutzer, das Root-Passwort anstelle ihres eigenen Passworts zu verwenden, wenn Sie den Sudo-Befehl verwenden

Grundlagen der Linux-Befehlszeile:sudo

So setzen Sie das NextCloud-Admin-Passwort mit dem Befehl zurück

Verwenden des Watch-Befehls unter Linux