下面的代码将执行您想要的操作,您可以将其调整为执行函数:
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目录,因此您需要在$PATH中安装install.sh,或者(很可能)您需要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()