Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

Copy link

alphaCTzo7G commented Mar 11, 2018

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

@rita33cool1

This comment has been minimized.

Copy link

rita33cool1 commented Nov 28, 2019

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
You can’t perform that action at this time.