Skip to content

Instantly share code, notes, and snippets.

@mardix
Forked from mattyjones/python_over_ssh
Created March 21, 2017 07:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mardix/3dfee211a0a0962ce84d2f32faea5458 to your computer and use it in GitHub Desktop.
Save mardix/3dfee211a0a0962ce84d2f32faea5458 to your computer and use it in GitHub Desktop.
Execute a script located on a remote server over ssh using python
#! /usr/bin/env python
import secure
import pexpect
# the file containing the list of servers to log into
input_file = "script_list"
# The login creds
user = secure.USER
password= secure.PASSWORD
def ssh_command (user, host, password, command):
"""This runs a command on the remote host."""
print " I am logging into", host
ssh_newkey = 'Are you sure you want to continue connecting'
child = pexpect.spawn('ssh -l %s %s %s'%(user, host, command))
i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'password: '])
if i == 0: # Timeout
print('ERROR!')
print('SSH could not login. Here is what SSH said:')
print(child.before, child.after)
return None
if i == 1: # SSH does not have the public key. Just accept it.
child.sendline ('yes')
child.expect ('password: ')
i = child.expect([pexpect.TIMEOUT, 'password: '])
if i == 0: # Timeout
print('9ERROR!')
print('SSH could not login. Here is what SSH said:')
print(child.before, child.after)
return None
child.sendline(password)
return child
def main():
f = open(input_file, "r")
server_list = f.readlines()
for server in server_list:
child = ssh_command (user, server, password, 'script.sh')
child.expect(pexpect.EOF)
output = child.before
if __name__ == "__main__":
main()
@alphaCTzo7G
Copy link

Thanks for the script.. Whats the secure library you are using?

@yjwangtw
Copy link

I get the error
/bin/sh: 1: script.sh: not found
The OS of my remote device is Ubuntu.
I guess the reason is that Ubuntu has replaced /bin/sh by /bin/bash.
However, I still don't know how to fix it.
Do you have any ideas?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment