GNU/Linux >> Tutoriels Linux >  >> Linux

en utilisant sudo à l'intérieur de la cellule du cahier jupyter

Mise à jour : J'ai vérifié toutes les méthodes, elles fonctionnent toutes.

1 :

Demander un mot de passe en utilisant getpass module qui masque essentiellement l'entrée par l'utilisateur, puis exécute la commande 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

REMARQUE pour les méthodes ci-dessus :

Le champ où vous entrez le mot de passe peut ne pas apparaître dans le ipythonnotebook. Il apparaît dans la fenêtre du terminal sur un mac, et j'imagine qu'il apparaîtra dans un shell de commande sur un PC. Même les détails du résultat apparaîtraient dans le terminal.

3 :

Vous pouvez stocker votre mot de passe dans mypasswordfile fichier et tapez simplement dans la cellule :

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

Je préférerais cette méthode si je veux afficher la sortie de la commande dans le cahier jupyter lui-même.

Références :

  1. Demande de mot de passe dans le bloc-notes IPython

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

  3. Utiliser sudo avec un script Python

Vous pouvez passer des variables python d'un cahier au shell sans importer le os ou subprocess modules en utilisant la syntaxe {varname} (par exemple, ce blog sympa).

Si vous avez défini un mot de passe et une variable de commande en python (voir la réponse de Suparshva), vous pouvez exécuter ce one-liner :

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

Le point d'exclamation indique à jupyter de l'exécuter dans le shell, le echo la commande obtiendra alors le vrai mot de passe (par exemple 'funkymonkey') à partir de la variable appelée password puis dirigez-le dans le sudo'd command variable (qui est une chaîne qui décrit une commande shell, par exemple 'apt-get update').


Vous pouvez

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

Si vous voulez éviter la syntaxe python, vous pouvez définir votre propre cellule magique qui le fait pour vous (par exemple %sudo apt-get install bla ).


Linux
  1. sudo :commande introuvable

  2. Ansible :sudo sans mot de passe

  3. commande introuvable lors de l'utilisation de sudo

  4. Autoriser l'exécution automatique de commandes en tant que root sous Linux à l'aide de SSH

  5. Connectez-vous à MySQL via la ligne de commande sans utiliser de mot de passe root ?

Comment exécuter la commande Sudo sans mot de passe

Commande Sudo sous Linux

Forcer les utilisateurs à utiliser le mot de passe racine au lieu de leur propre mot de passe lors de l'utilisation de la commande Sudo

Principes de base de la ligne de commande Linux :sudo

Comment réinitialiser le mot de passe administrateur NextCloud à l'aide de la commande

Utilisation de la commande Watch sous Linux