0

Pythonでrsyncを実装しようとしています。これが私のコードです。

#!/usr/bin/python

import os

url = raw_input("Paste your URL:")
username = raw_input("Enter username:")
#password = raw_input("Enter password:")

source = username + "@" + url
#print source

print os.system('rsync -zvr --progress source /home/zurelsoft/R')

ロジックは単純です。ユーザーは、ソースに保存されている URL とユーザー名を適切な形式で入力します。次に、ソース変数が rsync コマンドで使用されます。サーバーの有効な URL とユーザー名を入力していますが、次のエラーが発生します。

rsync: link_stat "/home/name/source" failed: No such file or directory (2)

私は何を間違っていますか?

4

2 に答える 2

4

静的文字列を渡しています。ユーザーの入力に関係なく、rsync には常にまったく同じコマンドライン オプションを指定します。sourceおそらく次の値に置き換えたいと思うでしょう:

print os.system('rsync -zvr --progress {source} /home/zurelsoft/R'.format(source=source))

補足として、これは次の方法でより適切に実行できますsubprocess

subprocess.call(['rsync','-zvr','--progress',source,'/home/zurelsoft/R'])

それは問題ではないかもしれませんが、この方法でプログラムの巨大なセキュリティ ホールを閉じることができます(ユーザー; rm -rf ~;がユーザー名として入力した場合を考えてみてください...)。

于 2012-11-07T06:15:39.320 に答える
0

subprocess.call を使用する

subprocess.call(["rsync", "-avz", "--exclude-from", "/tmp/exclude-list.txt", source, destination])

または出力が必要な場合は、

 output = subprocess.Popen(["rsync", "-avz", "--exclude-from", "/tmp/exclude-list.txt", source, destination])
于 2016-01-29T05:04:59.877 に答える