GNU/Linux >> Linux Esercitazione >  >> Linux

usando sudo all'interno della cella del notebook jupyter

Aggiornamento: Ho controllato tutti i metodi, funzionano tutti.

1:

Richiedi la password utilizzando getpass module che essenzialmente nasconde l'input dell'utente e quindi esegue il comando sudo in python.

 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

NOTA per i metodi precedenti:

Il campo in cui inserisci la password potrebbe non essere visualizzato in ipythonnotebook. Appare nella finestra del terminale su un Mac e immagino che apparirà in una shell dei comandi su un PC. Anche i dettagli del risultato appariranno nel terminale.

3:

Puoi memorizzare la tua password in mypasswordfile file e digita solo nella cella :

!sudo -S apt-get install blah < /pathto/mypasswordfile # again -S is important here

Preferirei questo metodo se voglio visualizzare l'output del comando nello stesso jupyter notebook.

Riferimenti:

  1. Richiesta della password nel notebook IPython

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

  3. Uso di sudo con script Python

Puoi passare le variabili python da un notebook alla shell senza importare il os o subprocess moduli utilizzando la sintassi {varname} (ad es. questo fantastico blog).

Se hai definito una password e una variabile di comando in python (vedi la risposta di Suparshva), puoi eseguire questo one-liner:

!echo {password}|sudo -S {command}

Il punto esclamativo dice a jupyter di eseguirlo nella shell, il echo comando otterrà quindi la vera password (ad es. 'funkymonkey') dalla variabile chiamata password e quindi convogliarlo nel sudo'd command variabile (che è una stringa che descrive un comando della shell, ad esempio 'apt-get update').


Puoi

subprocess.Pope(['sudo', 'apt-get', 'install', 'bla'])

Se vuoi evitare la sintassi di Python, puoi definire la tua magia cellulare che lo fa per te (ad es. %sudo apt-get install bla ).


Linux
  1. sudo:comando non trovato

  2. Utilizzando il comando passwd dall'interno di uno script di shell

  3. Ansible:sudo senza password

  4. comando non trovato quando si utilizza sudo

  5. Connettiti a MySQL tramite la riga di comando senza utilizzare la password di root?

Come eseguire il comando Sudo senza password

Comando Sudo in Linux

Forza gli utenti a utilizzare la password di root anziché la propria password quando utilizzano il comando Sudo

Nozioni di base sulla riga di comando di Linux:sudo

Come reimpostare la password amministratore di NextCloud usando il comando

Utilizzo del comando Watch in Linux