#python #subprocess #rsync
#python #подпроцесс #rsync
Вопрос:
Я пишу скрипт автоматизации Python для загрузки файлов через rsync. Запуск этого из Bash работает
/usr/bin/rsync -av -e “/usr/bin/ssh -i $PATH_TO_SSH_IDENTITY_KEY” $SRC USER@HOSTNAME:/firstparam/secondparam
Однако запуск из Python выдает эту ошибку
rsync error: syntax or usage error (code 1) at main.c(1407) [client=3.0.6]
Это рассматриваемый код, вызывающий rsync
cmd = ['/usr/bin/rsync', '-av', '-e', config.ssh_identity, src, config.host ':/rootpath' firstparam '/' secondparam]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
(output, err) = p.communicate()
где
config.ssh_identity = ‘/usr/bin/ssh -i $PATH_TO_SSH_IDENTITY_KEY’
config.host = ‘USER@HOSTNAME’
Что могло вызвать ошибку?
Комментарии:
1. сначала попробуйте получить
PATH_TO_SSH_IDENTITY_KEY
изos.environ
.2. Вы, вероятно, хотите,
shell=False
поскольку вы передаете массив параметров и не хотите, чтобы какой-либо из них был дополнительно разделен на пробелы.
Ответ №1:
Разобрался. Согласно ошибке сервера, я запускал скрипт как суперпользователь, и ему не понравилось, что я не тот, за кого себя выдавал (ec2-пользователь). Поэтому пришлось связать суперпользователя с ec2-пользователем