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()
@chrisotter92

This comment has been minimized.

Copy link

chrisotter92 commented Dec 19, 2017

Sorry, this may seem like a dumb question but where do I get the secure module?

@Arnold1

This comment has been minimized.

Copy link

Arnold1 commented Jan 18, 2018

how to execute a script from a local server on a remote server?

@alphaCTzo7G

This comment has been minimized.

Copy link

alphaCTzo7G commented Mar 11, 2018

@chrisotter92, you dont need to know about the secure module. It seems that on line 10-11 matt is just using the secure module to extract the username and password as strings.

You should already know the username and password, which you can provide, without invoking the secure module

@alphaCTzo7G

This comment has been minimized.

Copy link

alphaCTzo7G commented Mar 11, 2018

@Arnold1.. this is exactly what the script is doing using the pexpect library:https://github.com/pexpect/pexpect

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.