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:
-
Meminta kata sandi di notebook IPython
-
https://docs.python.org/3.1/library/getpass.html
- 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
).