2012-04-03 2 views
2

ディレクトリをchownしようとすると、Fabricが私にEOFErrorを与えています。直前に実行されるPythonスクリプトからサブプロセスを実行した場合にのみ発生します。私fabfileからファブリックでサブプロセスを実行しているときのEOFError

... 
with settings(warn_only=True): 
    run('python my_scripts/import_local.py') 
sudo('chown www-data:www-data /opt/mm/my_project/uploads -R') 

私はエラーを取得していないmy_scripts/import_local.pyのうち、以下の行をコメントアウトした場合:私に残されたサブプロセスラインで

p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE) 
    result = p.communicate()[0].splitlines() 
    if result: 
     print result 

がで実行されている(このトレースバックを取得します - -show = debug):

[xx.xx.xxx.xxx] sudo: sudo -S -p 'sudo password:' /bin/bash -l -c "cd /opt/mm/my_project/current && source environment.sh && chown www-data:www-data /opt/mm/my_project/uploads -R" 
Traceback (most recent call last): 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/main.py", line 682, in main 
    *args, **kwargs 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/tasks.py", line 232, in execute 
    task.run(*args, **new_kwargs) 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/tasks.py", line 105, in run 
    return self.wrapped(*args, **kwargs) 
    File "/Users/jesse.aldridge/Dropbox/my_code/my_project/fabfile.py", line 162, in do_reimport 
    sudo('chown www-data:www-data /opt/mm/my_project/uploads -R') 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/network.py", line 343, in host_prompting_wrapper 
    return func(*args, **kwargs) 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/operations.py", line 976, in sudo 
    user=user) 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/operations.py", line 867, in _run_command 
    combine_stderr) 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/fabric/operations.py", line 753, in _execute 
    channel.get_pty(width=cols, height=rows) 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/ssh/channel.py", line 158, in get_pty 
    self._wait_for_event() 
    File "/Users/jesse.aldridge/.virtualenvs/my_project/lib/python2.6/site-packages/ssh/channel.py", line 1084, in _wait_for_event 
    raise e 
EOFError 
Disconnecting from xx.xx.xxx.xxx... done. 
+2

はsudoの問題のようです。このユーザーはsudoを実行するためにパスワードが必要なのでしょうか? –

+0

スクリプトのどこかでsudoを実行すると、ファブリックは私のパスワードを要求します。 –

+0

サブプロセスPIPEを使用しないとどうなりますか?あるいは、あなたのファブファイルのラインの間に少し「time.sleep」を入れたら? –

答えて

-1

実行するとどうなりますか:

$ ssh xx.xx.xxx.xxx -t'sudo -S -p "sudo password:" /bin/bash -l -c "cd /opt/mm/my_project/current && source environment.sh && chown www-data:www-data /opt/mm/my_project/uploads -R"' 
+0

私は同じエラーがあります、このコマンドは動作します – GuySoft

関連する問題