GNU/Linux >> Tutoriales Linux >  >> Linux

usando sudo dentro de la celda del cuaderno jupyter

Actualización: Revisé todos los métodos, todos funcionan.

1:

Solicitar contraseña usando getpass module que esencialmente oculta la entrada del usuario y luego ejecuta el comando sudo en 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 para los métodos anteriores:

Es posible que el campo donde ingresa la contraseña no aparezca en el ipythonnotebook. Aparece en la ventana de la terminal en una Mac, e imagino que aparecerá en un shell de comandos en una PC. Incluso los detalles de los resultados aparecerían en la terminal.

3:

Puede almacenar su contraseña en mypasswordfile archivo y simplemente escriba en la celda:

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

Preferiría este método si quiero ver el resultado del comando en el propio cuaderno jupyter.

Referencias:

  1. Solicitando contraseña en notebook IPython

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

  3. Uso de sudo con secuencias de comandos de Python

Puede pasar variables de python desde un cuaderno al shell sin importar el os o subprocess módulos mediante el uso de la sintaxis {varname} (por ejemplo, este blog genial).

Si ha definido una contraseña y una variable de comando en python (consulte la respuesta de Suparshva), puede ejecutar esta línea:

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

El signo de exclamación le dice a jupyter que lo ejecute en el shell, el echo El comando obtendrá la contraseña real (por ejemplo, 'funkymonkey') de la variable llamada password y luego canalícelo en el sudo'd command variable (que es una cadena que describe un comando de shell, por ejemplo, 'apt-get update').


Puedes

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

Si desea evitar la sintaxis de python, puede definir su propia celda mágica que lo haga por usted (por ejemplo, %sudo apt-get install bla ).


Linux
  1. ¿Ejecutar un comando Sudo, especificando la contraseña en la misma línea?

  2. Usando el comando passwd desde dentro de un script de shell

  3. Permitir la ejecución automática de comandos como root en Linux usando SSH

  4. ¿Conectarse a MySQL a través de la línea de comandos sin usar la contraseña de root?

  5. comando de linux encontrado pero no encontrado al usar sudo

Cómo ejecutar el comando Sudo sin contraseña

Comando Sudo en Linux

Obligar a los usuarios a usar la contraseña raíz en lugar de su propia contraseña cuando usan el comando Sudo

Conceptos básicos de la línea de comandos de Linux:sudo

Cómo restablecer la contraseña de administrador de NextCloud usando el comando

Usando el comando Watch en Linux