Guest User

Untitled

a guest
Nov 22nd, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.06 KB | None | 0 0
  1. import sys
  2. from PyQt4.QtCore import *
  3. from PyQt4.QtGui import *
  4. import ipaddress
  5.  
  6. class Stream(QObject):
  7. newText = pyqtSignal(str)
  8.  
  9. def write(self, text):
  10. self.newText.emit(str(text))
  11.  
  12. def flush(self):
  13. pass
  14.  
  15. class MyClass(object):
  16. def __init__(self, device_type=None, ip=None, username=None, password=None, secret=None, command=None):
  17. self.device_type = device_type
  18. self.ip = ip
  19. self.username = username
  20. self.password = password
  21. self.secret = secret
  22. self.command = command
  23.  
  24. class sshConnection(QThread):
  25. def __init__(self):
  26. QThread.__init__(self)
  27.  
  28. def __del__(self):
  29. self.wait()
  30.  
  31. def runSSH(self):
  32. #doo process
  33. print('Haii')
  34. for x in range(100):
  35. print(x)
  36.  
  37.  
  38. class Widget(QWidget):
  39. def __init__(self, parent=None):
  40. QWidget.__init__(self, parent=parent)
  41. self.device_list = [] # object array
  42. self.setWindowTitle("Network Automation")
  43. self.setFixedSize(350,500)
  44. ############################# Input IP
  45.  
  46. sys.stdout = Stream(newText=self.onUpdateText)
  47.  
  48. # Device Type
  49. lb_device_list = QLabel(self)
  50. lb_device_list.setText('Device Type')
  51. self.cb_device_list = QComboBox(self)
  52. self.cb_device_list.addItem('cisco_ios')
  53. self.cb_device_list.addItem('cisco_s300')
  54.  
  55. # Ip Device
  56. lb_ip = QLabel(self)
  57. lb_ip.setText('IP Address')
  58. self.le_ip = QLineEdit(self)
  59. self.le_ip.setText('')
  60. self.le_ip.setPlaceholderText('Input Device IP')
  61. self.le_ip.setFixedWidth(150)
  62.  
  63. # username
  64. lb_username = QLabel(self)
  65. self.le_username = QLineEdit(self)
  66. lb_username.setText('Username')
  67. self.le_username.setText('')
  68. self.le_username.setPlaceholderText('Input Username')
  69. self.le_username.setFixedWidth(150)
  70.  
  71. # password
  72. lb_password = QLabel(self)
  73. self.le_password = QLineEdit(self)
  74. lb_password.setText('Password')
  75. self.le_password.setText('')
  76. self.le_password.setPlaceholderText('Input Password')
  77. self.le_password.setFixedWidth(150)
  78.  
  79. # Privilage Password
  80. lb_enable = QLabel(self)
  81. lb_enable.setText('Privilege Mode Password')
  82. self.le_enable = QLineEdit(self)
  83. self.le_enable.setText('')
  84. self.le_enable.setPlaceholderText('Input Enable Password')
  85. self.le_enable.setFixedWidth(150)
  86.  
  87. # button generate and add
  88. btgenerate = QPushButton(self)
  89. btgenerate.setText('Generate')
  90. btgenerate.setFixedWidth(70)
  91. btadd = QPushButton(self)
  92. btadd.setText('Add')
  93.  
  94. # button delete
  95. btdel = QPushButton(self)
  96. btdel.setFixedWidth(70)
  97. btdel.setText('Remove')
  98.  
  99. # line
  100. line = QFrame(self)
  101. line.setFrameShape(QFrame.VLine)
  102. line.setFrameShadow(QFrame.Sunken)
  103. line.setLineWidth(3)
  104.  
  105. #line 2
  106. line2 = QFrame(self)
  107. line2.setFrameShape(QFrame.HLine)
  108. line2.setFrameShadow(QFrame.Sunken)
  109. line2.setLineWidth(3)
  110.  
  111. ########################### Layout Ip Device List
  112.  
  113. lb3 = QLabel(self)
  114. lb3.setText('IP Device List')
  115. self.ip_device_list = QListWidget(self)
  116. self.ip_device_list.setFixedWidth(150)
  117. # self.combobox_ip_list = QComboBox(self)
  118. # self.combobox_ip_list.setFixedWidth(170)
  119.  
  120. ############################## SubLayout and Layout
  121. hblayout = QHBoxLayout()
  122. hblayout.addWidget(btgenerate)
  123. hblayout.addWidget(btadd)
  124.  
  125. ############################### Processs
  126. processlabel = QLabel("Process",self)
  127.  
  128. self.process = QTextEdit(self)
  129. self.process.setLineWrapColumnOrWidth(400)
  130. self.process.setLineWrapMode(QTextEdit.FixedPixelWidth)
  131. self.process.setReadOnly(True)
  132.  
  133.  
  134. sublayout = QVBoxLayout()
  135. sublayout.addWidget(lb_device_list)
  136. sublayout.addWidget(self.cb_device_list)
  137. sublayout.addWidget(lb_ip)
  138. sublayout.addWidget(self.le_ip)
  139. sublayout.addWidget(lb_username)
  140. sublayout.addWidget(self.le_username)
  141. sublayout.addWidget(lb_password)
  142. sublayout.addWidget(self.le_password)
  143. sublayout.addWidget(lb_enable)
  144. sublayout.addWidget(self.le_enable)
  145. sublayout.addLayout(hblayout)
  146.  
  147. sublayout2 = QVBoxLayout()
  148. sublayout2.addWidget(lb3)
  149. sublayout2.addWidget(self.ip_device_list)
  150. #sublayout2.addWidget(self.combobox_ip_list)
  151. sublayout2.addWidget(btdel)
  152. sublayout2.addStretch(1)
  153.  
  154. sublayout3 = QVBoxLayout()
  155. sublayout3.addWidget(processlabel)
  156. sublayout3.addWidget(self.process)
  157.  
  158. layout = QGridLayout(self)
  159. layout.addLayout(sublayout, 0, 0)
  160. layout.addWidget(line, 0, 1)
  161. layout.addWidget(line2, 1, 0, 1, 3)
  162. #layout.addWidget(processlabel,2,0)
  163. layout.addLayout(sublayout3,2,0,2,3)
  164. layout.addLayout(sublayout2, 0, 2)
  165.  
  166. btadd.clicked.connect(self.addDevice)
  167. btdel.clicked.connect(self.remove)
  168. btgenerate.clicked.connect(self.runThread)
  169.  
  170. def onUpdateText(self, text):
  171. cursor = self.process.textCursor()
  172. cursor.movePosition(QTextCursor.End)
  173. cursor.insertText(text)
  174. self.process.setTextCursor(cursor)
  175. self.process.ensureCursorVisible()
  176.  
  177. # ----------- AddDevice Process
  178.  
  179. def addDevice(self):
  180. try:
  181. ip = self.le_ip.text()
  182. ipaddress.ip_address(ip)
  183. device_type = str(self.cb_device_list.currentText())
  184. username = self.le_username.text()
  185. password = self.le_password.text()
  186. secret = self.le_enable.text()
  187. command = 'show tech'
  188. coomand2 = ''
  189. self.device_list.append(MyClass(device_type, ip, username, password, secret, command))
  190.  
  191. # self.combobox_ip_list.addItem(ip)# Add Ip to ComboBox
  192. self.ip_device_list.addItem(ip)
  193.  
  194. self.le_ip.clear()
  195. self.le_username.clear()
  196. self.le_password.clear()
  197. self.le_enable.clear()
  198. for list in self.device_list:
  199. print(list.ip, list.device_type)
  200. except ValueError:
  201. print("insert you're ip correctly")
  202. QMessageBox.question(self, 'Warning', "Insert You're IP Corecctly")
  203.  
  204. def remove(self):
  205. index = self.ip_device_list.currentRow()
  206. if index != -1:
  207. self.ip_device_list.takeItem(index)
  208. del self.device_list[index]
  209.  
  210. def runThread(self):
  211. self.run_thread = sshConnection()
  212. self.run_thread.finished.connect(app.exit)
  213. self.run_thread.start()
  214.  
  215. app = QApplication(sys.argv)
  216. app.setStyle('cleanlooks')
  217. window = Widget()
  218. window.show()
  219. sys.exit(app.exec_())
  220.  
  221. class sshConnection(QThread):
  222. def __init__(self):
  223. QThread.__init__(self)
  224.  
  225. def __del__(self):
  226. self.wait()
  227.  
  228. def run(self):
  229. self.runSSH()
  230.  
  231. def runSSH(self):
  232. #doo process
  233. print('Haii')
  234. for x in range(100):
  235. print(x)
Add Comment
Please, Sign In to add comment