ниже код будет делать то, что вы хотите, и вы можете адаптировать его к 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()
Больше код, пожалуйста. Недостаточно контекста. –
вопрос слишком расплывчатый, какой ssh-оболочкой вы используете, что такое ошибка, и откуда вы знаете, что «сценарий не запускался» вместо «сценарий работает, но с ошибками». –
Я не знаю, почему вы хотите это сделать, но если это для администрирования sys, вы можете найти [Fabric] (http://fabfile.org/) полезным. – charlax