Приведенный ниже код будет делать то, что вы хотите, и вы можете адаптировать его к вашей execute
функции:
from paramiko import SSHClient
host="hostname"
user="username"
client = SSHClient()
client.load_system_host_keys()
client.connect(host, username=user)
stdin, stdout, stderr = client.exec_command('./install.sh')
print "stderr: ", stderr.readlines()
print "pwd: ", stdout.readlines()
Обратите внимание, что команды по умолчанию будут находиться в вашем каталоге $HOME
, поэтому вы 'либо вам потребуется install.sh
в вашем $PATH
, либо (скорее всего) вам потребуется cd
в каталог, содержащий скрипт install.sh
.
Вы можете проверить путь по умолчанию с помощью:
stdin, stdout, stderr = client.exec_command('getconf PATH')
print "PATH: ", stdout.readlines()
Однако, если он не находится на вашем пути, вы можете cd
и выполнить скрипт следующим образом:
stdin, stdout, stderr = client.exec_command('(cd /path/to/files; ./install.sh)')
print "stderr: ", stderr.readlines()
print "pwd: ", stdout.readlines()
Если скрипт не находится в вашем $PATH
вам нужно будет использовать ./install.sh
вместо install.sh
, как если бы вы были в командной строке.
Если у вас все еще есть проблемы после всего вышеперечисленного, возможно, было бы также полезно проверитьправа доступа к файлу install.sh
:
stdin, stdout, stderr = client.exec_command('ls -la install.sh')
print "permissions: ", stdout.readlines()