I have created a python script in order to ssh to a remote machine and run a script on that machine to unlock user accounts.
I am only getting an return code 255 .
I have eliminated all 'splunk code' from the script, and the python script by itself works just fine when ran, and unlocks the account on the remote machine. I am wondering what I am doing wrong.
I have also copied the appropriate .ssh key to the remote machines in order to remove authentication when ssh to the remote machine.
This is my script:
'''
import sys
import splunk.Intersplunk
import subprocess
import logging
import os
# System logging
logger = logging.getLogger('testssh')
hdlr = logging.FileHandler('/tmp/testssh.txt')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
try:
keywords,options = splunk.Intersplunk.getKeywordsAndOptions() # Get all the options passed
# Check for passed parameters
if not options.has_key('host'):
splunk.Intersplunk.generateErrorResults("no host specified")
exit(0)
if not options.has_key('user'):
splunk.Intersplunk.generateErrorResults("no user specified")
exit(0)
if not options.has_key('command'):
splunk.Intersplunk.generateErrorResults("no command specified")
exit(0)
command = options.get('command', None)
host = options.get('host', None)
user = options.get('user', None)
results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults()
for r in results:
try:
# Call the script passing all the necessary arguments
p = subprocess.Popen(["ssh -i /idn/home/tmarlett/.ssh/id_rsa -q -t -t tmarlett@r[host] r[command]"],stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
# Get the output from script and push it to new output column
out,err = p.communicate()
#logger.info(out.decode("utf-8"))
r["output"]= out.decode("utf-8")
r["error"]=err
r["return_code"]=p.returncode;
except ValueError, e:
results = splunk.Intersplunk.generateErrorResults(str(e))
except OSError, e:
results = splunk.Intersplunk.generateErrorResults(str(e))
#Output results back to Splunk
splunk.Intersplunk.outputResults(results)
except Exception, e:
results = splunk.Intersplunk.generateErrorResults(str(e))
And this is the output it shows me when running the script:
Does anyone have any insight as to why this would be happening?
... View more