The code below will do what you want and you can adapt it to your execute
function:
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()
Note, though, that commands will default to your $HOME
directory, so you'll either need to have install.sh
in your $PATH
or (most likely) you'll need to cd
to the directory that contains the install.sh
script.
You can check your default path with:
stdin, stdout, stderr = client.exec_command('getconf PATH')
print "PATH: ", stdout.readlines()
However, if it is not in your path you can cd
and execute the script like this:
stdin, stdout, stderr = client.exec_command('(cd /path/to/files; ./install.sh)')
print "stderr: ", stderr.readlines()
print "pwd: ", stdout.readlines()
If the script is not in your$PATH
you'll need to use ./install.sh
instead of install.sh
, just like you would if you were on the command line.
If you are still having problems after everything above it might also be good to check the permissions of the install.sh
file, too:
stdin, stdout, stderr = client.exec_command('ls -la install.sh')
print "permissions: ", stdout.readlines()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…