私はsshを使用してバックアップスクリプトを作成しようとしていて、subprocess.Popenモジュールを呼び出した後、 stderrに何かが含まれているかどうかをチェックし、エラーをログファイルに書き込みます。標準エラーログファイルpython log stderrをファイル
15-September-2011_12.14PM tar: Removing leading `/' from member names
上
def server():
bpath = "/mnt/backup/server-address/usrlocalbin/"
rpath = "/usr/local/bin"
bpath1 = "/mnt/backup/server-address/project/"
rpath1 = "/var/www/project"
cmd1 = "ssh -q [email protected] tar -zcf - "+rpath+" > " +bpath+"usrlocalbin.tar.gz"
cmd2 = "ssh -q [email protected] tar -zcf - "+rpath1+" > " +bpath1+"project.tar.gz"
exec1 = subprocess.Popen(cmd1,shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout,stderr = exec1.communicate()
if stderr:
log.write(t+ " "+ stderr + " \n")
else:
log.write(t+ " "+ "Backup of /usr/local/bin/ for server-address complete..\n")
exec2 = subprocess.Popen(cmd2, shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout,stderr = exec2.communicate()
if stderr:
log.write(t+ " "+ stderr + " \n")
else:
log.write(t+ " "+ "Backup of /var/www/project for server-address complete..\n")
の一部は、私はそれが最初の行を拾ったとstderrの一部としてそれを考えたと思います...任意のアイデアこの問題を解決する方法?
は、より多くの研究の後: - + RPATH + "
それは...ので、タールの
「のssh -qルートの@ CCE-linsvcs-001タールzcfP" を使用して固定
ました
「usrlocalbin.tar.gz> "+ bpath +" 新しいエラー
もう一度標準エラー出力をテストするには、リモートホストへのI無効にssh
ssh [email protected]
ssh: connect to host server-address port 22: No route to host
とstderrは、このエラーをキャッチしていませんか?どんな考え?
クールで、vフラグを外すのを忘れました。これでこのエラーが発生しました。「15-September-2011_12.48PM tar:メンバー名から先行する '/ 'を取り除く」 – krisdigitx
2秒間、 '-P'フラグ、それが必要なものかどうかを調べるか、まさに文字列を取り除くか、最初の行だけを取り除くフィルタを書くことができます。シェルスクリプトがより適切です。 –
私はすでにPフラグを使用していて、sshエラーを捕まえられません。これはPythonでこれを達成したいのですが、わかりやすくbashでわかります。 – krisdigitx