Advertisement
Guest User

Untitled

a guest
May 28th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. #! /usr/bin/python
  2.  
  3. import os
  4. import getpass
  5. import paramiko
  6. import xlsxwriter
  7. import socket
  8. import re
  9. import sys
  10. import time
  11.  
  12.  
  13. username = raw_input('Enter username for device login:')
  14.  
  15. def enterPassword():
  16. while True: # repeat forever
  17. password = getpass.getpass('Enter corresponding password:')
  18. # password_again = getpass.getpass('Confirm password:')
  19. # if password != password_again:
  20. # print 'Password and confirmation do not match.Please try again!!'
  21. # else:
  22. return password
  23. password = enterPassword()
  24. print "Running the tests..this might take some time.."
  25.  
  26. # Opens file in read mode
  27. f1 = open('hostfile','r')
  28. f2 = open('commandfile','r')
  29. # Creates list based on f1
  30. devices = f1.readlines()
  31. commands = f2.readlines()
  32.  
  33. ssh = paramiko.SSHClient()
  34. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  35.  
  36. data = []
  37. for device in devices:
  38. column = device.split()
  39. data.append([column[0]])
  40. print '\033[1m' + 'CONNECTING TO NODE %s' % column[0]
  41. print '\033[0m'
  42. print '\n'
  43. print '\n'
  44. for command in commands:
  45. try:
  46. print '\033[1m' + '%s' % command
  47. print '\033[0m'
  48. ssh.connect(column[0], username=username, password=password)
  49. #transport = ssh.get_transport()
  50. #session = transport.open_session()
  51. #session.set_combine_stderr(True)
  52. #session.get_pty()
  53. #if conn is None:
  54. (stdin, stdout, stderr) = ssh.exec_command(command, get_pty=True)
  55. if command.find("sudo") != -1:
  56. chan = ssh.get_transport().open_session()
  57. chan.get_pty()
  58. chan.setblocking(1)
  59.  
  60. chan.exec_command(command)
  61.  
  62. while chan.recv_ready()==False:
  63. stdout=chan.recv(4096)
  64. if re.search('[Pp]assword', stdout):
  65. chan.send(password+'\n')
  66. time.sleep(1)
  67.  
  68. while chan.recv_ready():
  69. stdout = chan.recv(20000)
  70. print stdout
  71. chan.close()
  72. #print stdin
  73. #print stdout
  74. #print stderr
  75. #data[-1].append(stdout.read())
  76. else:
  77. (stdin, stdout, stderr) = ssh.exec_command(command, get_pty=True)
  78. for line in stdout.readlines():
  79. print line
  80. print '\n'
  81. print '\n'
  82. # 3 ssh.close()
  83. # 3 print '\033[1m' + 'ALL COMMANDS EXECUTED ON %s, CHECKING HOSTFILE FOR MORE NODES' % column[0]
  84. # print '\033[0m'
  85. except paramiko.AuthenticationException:
  86. output = "Authentication Failed"
  87. data[-1].append(output)
  88. break
  89. except paramiko.SSHException:
  90. output = "Issues with SSH service"
  91. data[-1].append(output)
  92. break
  93. except socket.error, e:
  94. output = "Connection Error"
  95. data[-1].append(output)
  96. break
  97. data[-1] = tuple(data[-1])
  98. ssh.close()
  99. print '\033[1m' + 'ALL COMMANDS EXECUTED ON %s, CHECKING HOSTFILE FOR MORE NODES' % column[0]
  100. print '\033[0m'
  101.  
  102.  
  103. f1.close()
  104. f2.close()
  105. #Create Workbook instance
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112. O/p:
  113.  
  114.  
  115. $ python testparam.py
  116. Enter username for device login:uname
  117. Enter corresponding password:
  118. Running the tests..this might take some time..
  119. CONNECTING TO NODE 10.x.x.x
  120.  
  121.  
  122.  
  123.  
  124.  
  125. sudo -S fdisk -l
  126.  
  127.  
  128. [sudo] password for uname:
  129.  
  130.  
  131.  
  132.  
  133. ALL COMMANDS EXECUTED ON 10.x.x.x, CHECKING HOSTFILE FOR MORE NODES
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement