2016-04-18 7 views
0

Djangoでスクリプトを実行しようとしています。このスクリプトはsudoで実行する必要があり、sudoersファイルをセットアップしてsudoパスワードを入力せずにコマンドを実行できるようにしました。私がデフォルトのテストサーバ、すなわち> python manage.py runserver 0.0.0.0:8000を使用しているとき、スクリプトは問題なく実行されます。しかし、nginxのとuWSGIとジャンゴを展開した後、コマンドが失敗し、返す応答Djangoでスクリプトを実行

sudo: no tty present and no askpass program specified 

は、私が見逃している設定のいくつかの並べ替えはありますか?

私はDjangoのビュー内のスクリプトやコードを実行するサブプロセスを使用していますが、このようなものです:

subprocess.check_output("sudo /path/to/file/fileName.sh", shell=True) 
+0

あなたは必ずパスワードを提供せずにスクリプトを実行する権限を持っているようuwsgiが実行されても、ユーザーはありますか? sudoersファイルに 'requiretty'オプションが含まれていないことを確認しましたか? – koniiiik

+0

スクリプトが何をするのかを行うPythonコードを書いて、あなたのビューにそのPythonコードを置くことができれば、それが優れています。 – ruddra

答えて

0

あなたはsudoersのリストには、使用しているユーザーを追加する必要があります。

パスワードを要求せずにそのコマンドを使用するようにユーザーに許可すると、問題が解決されます。最後の最後に追加する、そのファイルを編集し

sudo visudo

username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand

例えば

john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop

は、ユーザーを許可する第1シェルコンソールとタイプを開きます'john'は電源オフをsudoし、パスワードの入力を求めずに起動と停止を行います。

visudoで使用する必要があるキーストロークの画面の下部を見てください。これはviではありません。問題の最初の兆候で保存せずに終了します。健康に関する警告:このファイルを破損すると重大な結果になりますので、注意して編集してください!

ソース:How to fix 'sudo: no tty present and no askpass program specified' error?

+0

私はすでにそれをしています。問題は、コマンドがデプロイされたDjangoで動作しないということです – Youpe1949

+0

スクリプトを実行しているユーザーはどれですか?そのユーザーはsudoersリストに追加する必要があります(実際には、sudoerユーザーを使用してWebアプリケーションを実行するには安全ではありません)。 – ddalu5

+0

スクリプトを実行するユーザーは、sudoersファイルと同じです。上記の例のようなジョン – Youpe1949

関連する問題