GNU/Linux >> Belajar Linux >  >> Linux

menggunakan sudo di dalam sel notebook jupyter

Perbarui: Saya memeriksa semua metode, semuanya berfungsi.

1:

Minta kata sandi menggunakan getpass module yang pada dasarnya menyembunyikan input oleh pengguna dan kemudian menjalankan perintah sudo dengan 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

CATATAN untuk metode di atas:

Bidang tempat Anda memasukkan kata sandi mungkin tidak muncul di ipythonnotebook. Itu muncul di jendela terminal di mac, dan saya membayangkan itu akan muncul di command shell di PC. Bahkan detail hasil akan muncul di terminal.

3:

Anda dapat menyimpan kata sandi Anda di mypasswordfile file dan cukup ketik sel :

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

Saya lebih suka metode ini jika saya ingin melihat keluaran dari perintah di notebook jupyter itu sendiri.

Referensi:

  1. Meminta kata sandi di notebook IPython

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

  3. Menggunakan sudo dengan skrip Python

Anda dapat meneruskan variabel python dari notebook ke shell tanpa mengimpor os atau subprocess modul dengan menggunakan sintaks {varname} (mis. blog keren ini).

Jika Anda telah menentukan kata sandi dan variabel perintah dalam python (lihat jawaban Suparshva) maka Anda dapat menjalankan satu baris ini:

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

Tanda seru memberi tahu jupyter untuk menjalankannya di shell, echo perintah kemudian akan mendapatkan kata sandi asli (misalnya 'funkymonkey') dari variabel yang disebut password dan kemudian menyalurkannya ke sudo'd command variabel (yang merupakan string yang menjelaskan perintah shell, misalnya 'pembaruan apt-get').


Anda bisa

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

Jika Anda ingin menghindari sintaks python, Anda dapat menentukan sihir sel Anda sendiri yang melakukannya untuk Anda (mis. %sudo apt-get install bla ).


Linux
  1. perintah tidak ditemukan saat menggunakan sudo

  2. Mengizinkan eksekusi perintah otomatis sebagai root di Linux menggunakan SSH

  3. Terhubung ke MySQL melalui baris perintah tanpa menggunakan kata sandi root?

  1. Substitusi Perintah Menggunakan “?

  2. Jalankan Perintah Sudo, Menentukan Kata Sandi Pada Baris yang Sama?

  3. perintah linux ditemukan tetapi tidak ditemukan saat menggunakan sudo

  1. Perintah Sudo Setelah Panggilan Tidur Panjang Tanpa Meminta Kata Sandi Sudo?

  2. Siapa Pemilik File Jika File Dibuat Menggunakan Perintah Sudo?

  3. sudo:perintah tidak ditemukan