Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python
- import os
- import getpass
- import paramiko
- import xlsxwriter
- import socket
- import re
- import sys
- import time
- username = raw_input('Enter username for device login:')
- def enterPassword():
- while True: # repeat forever
- password = getpass.getpass('Enter corresponding password:')
- # password_again = getpass.getpass('Confirm password:')
- # if password != password_again:
- # print 'Password and confirmation do not match.Please try again!!'
- # else:
- return password
- password = enterPassword()
- print "Running the tests..this might take some time.."
- # Opens file in read mode
- f1 = open('hostfile','r')
- f2 = open('commandfile','r')
- # Creates list based on f1
- devices = f1.readlines()
- commands = f2.readlines()
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- data = []
- for device in devices:
- column = device.split()
- data.append([column[0]])
- print '\033[1m' + 'CONNECTING TO NODE %s' % column[0]
- print '\033[0m'
- print '\n'
- print '\n'
- for command in commands:
- try:
- print '\033[1m' + '%s' % command
- print '\033[0m'
- ssh.connect(column[0], username=username, password=password)
- #transport = ssh.get_transport()
- #session = transport.open_session()
- #session.set_combine_stderr(True)
- #session.get_pty()
- #if conn is None:
- (stdin, stdout, stderr) = ssh.exec_command(command, get_pty=True)
- if command.find("sudo") != -1:
- chan = ssh.get_transport().open_session()
- chan.get_pty()
- chan.setblocking(1)
- chan.exec_command(command)
- while chan.recv_ready()==False:
- stdout=chan.recv(4096)
- if re.search('[Pp]assword', stdout):
- chan.send(password+'\n')
- time.sleep(1)
- while chan.recv_ready():
- stdout = chan.recv(20000)
- print stdout
- chan.close()
- #print stdin
- #print stdout
- #print stderr
- #data[-1].append(stdout.read())
- else:
- (stdin, stdout, stderr) = ssh.exec_command(command, get_pty=True)
- for line in stdout.readlines():
- print line
- print '\n'
- print '\n'
- # 3 ssh.close()
- # 3 print '\033[1m' + 'ALL COMMANDS EXECUTED ON %s, CHECKING HOSTFILE FOR MORE NODES' % column[0]
- # print '\033[0m'
- except paramiko.AuthenticationException:
- output = "Authentication Failed"
- data[-1].append(output)
- break
- except paramiko.SSHException:
- output = "Issues with SSH service"
- data[-1].append(output)
- break
- except socket.error, e:
- output = "Connection Error"
- data[-1].append(output)
- break
- data[-1] = tuple(data[-1])
- ssh.close()
- print '\033[1m' + 'ALL COMMANDS EXECUTED ON %s, CHECKING HOSTFILE FOR MORE NODES' % column[0]
- print '\033[0m'
- f1.close()
- f2.close()
- #Create Workbook instance
- O/p:
- $ python testparam.py
- Enter username for device login:uname
- Enter corresponding password:
- Running the tests..this might take some time..
- CONNECTING TO NODE 10.x.x.x
- sudo -S fdisk -l
- [sudo] password for uname:
- ALL COMMANDS EXECUTED ON 10.x.x.x, CHECKING HOSTFILE FOR MORE NODES
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement