更新: すべてのメソッドを確認しましたが、すべて機能しています。
1:
getpass module
を使用してパスワードを要求する これは基本的にユーザーによる入力を隠し、Python で sudo コマンドを実行します。
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
上記の方法に関する注意:
<ブロック引用>パスワードを入力するフィールドは、ipythonnotebook に表示されない場合があります。 Mac のターミナル ウィンドウに表示され、PC のコマンド シェルに表示されると思います。結果の詳細も端末に表示されます。
3:
パスワードは mypasswordfile
に保存できます ファイルを開き、セルに入力するだけです:
!sudo -S apt-get install blah < /pathto/mypasswordfile # again -S is important here
コマンドの出力を jupyter ノートブック自体で表示したい場合は、この方法をお勧めします。
参考文献:
<オール>IPython ノートブックでパスワードをリクエストする
https://docs.python.org/3.1/library/getpass.html
os
をインポートせずに、ノートブックからシェルに Python 変数を渡すことができます。 または subprocess
{varname} 構文を使用してモジュールを作成します (例:このクールなブログ)。
Python でパスワードとコマンド変数を定義している場合 (Suparshva の回答を参照)、このワンライナーを実行できます:
!echo {password}|sudo -S {command}
感嘆符は、jupyter にシェル、echo
で実行するように指示します。 コマンドは、password
という変数から実際のパスワード (例:'funkymonkey') を取得します。 そして、それを sudo'd command
にパイプします 変数 (これは、シェル コマンドを説明する文字列です。たとえば、「apt-get update」)。
できます
subprocess.Pope(['sudo', 'apt-get', 'install', 'bla'])
Python 構文を避けたい場合は、それを行う独自のセル マジックを定義できます (例:%sudo apt-get install bla
).