2017-03-29 21 views
0

Django WebサイトからWordPressにファイルをアップロードしています。私は、コンソールから手動で行う場合djangoエラーが0以外の終了ステータス1を返しました

Command '['scp', '/uploads/test-01.txt', 'mysite.com:/home/wp-content/uploads/test-01.txt']' returned non-zero exit status 1

、 :

from subprocess import check_call 
    try: 
     check_call(['scp', filename, upload_filename]) 
     .... 
    except (CalledProcessError, OSError): 
     report['error_messages'].append("4 %s" % exc_info()[1]) 
     return report 

これはエラーになります

scp /uploads/test-01.txt mysite.com:/home/wp-content/uploads/test-01.txt 

それが働いている:

test-01.txt 100% 0 0.0KB/s 00:00 

を(それはです空のファイルなので0 KB)

なぜ、scpがDjangoから失敗するのか分かりません。エラーは明確ではありません。私に何ができる?

+0

ファイルにテキスト行を挿入してみてください。同じことが起こりますか? – postoronnim

+0

@postoronnimどういう意味ですか? – avi

答えて

0

一時的にcheck_outputの代わりにcheck_callを使用するようにコードを変更すると、標準エラーをキャプチャできます。

from subprocess import check_output, CalledProcessError, STDOUT 

try: 
    check_output(['scp', filename, upload_filename], stderr=STDOUT) 
except CalledProcessError as e: 
    print(e.output) # output from STDERR should show what is going wrong 

これは、何がうまくいかないかを示唆するものです。コンソールでコマンドをテストしたときにDjangoのWebサイトがあなたとは別のユーザとして実行されている場合は、権限である可能性があります。

+0

これを追加すると何も起こりません。以前のエラーも表示されません。私のdjangoはそれが関連する可能性が非常に古いですか? – avi

+0

Djangoが 'print'ステートメントを記録していない場合は、それを変更する必要があるかもしれませんが、それ以外の場合、Djangoのバージョンは違いはありません。上のコードはすべてPython標準ライブラリのものです。次のように – Alasdair

+0

私はそれを変更された: 'サブプロセスインポートcheck_call、check_output、CalledProcessError、STDOUT 試みから: check_output([ 'SCP'、ファイル名、upload_filename]、標準エラー出力= STDOUT) .... (CalledProcessError、OSErrorの)を除い: report ['error_messages']。append( "4%s、%s"%(CalledProcessError.output、exc_info()[]]) return report'と何も起こりません。それをしてください... – avi

関連する問題