Используя shell=True
со списком, вы запускаете эквивалент
sh -c ssh -i /path/myKey.pem centos@myServer.com lsb_release -a
, что не , что вы хотите;он запускает ssh
, но использует -i
в качестве значения $0
, а не первый аргумент ssh
.Это делает /path/myKey.pem
похожим на адрес хоста, к которому вы хотите подключиться.
Просто сбросьте shell=True
.
p = Popen(cmd, stdout=PIPE, stderr=PIPE)
Хотя здесь нет проблем, Клаус ДПредложение. передать lsb_release -a
в качестве единственного аргумента - это хорошая идея в целом.ssh
должен объединить их в одну строку, чтобы перейти к sh -c
на удаленном конце;можете также сделать это сами, чтобы убедиться, что все сделано правильно.
cmd = ['ssh', '-i', '/path/myKey.pem', 'centos@myServer.com', 'lsb_release -a']