Advertisement
Guest User

tkinter gui

a guest
Oct 23rd, 2013
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.12 KB | None | 0 0
  1. import paramiko
  2. import datetime
  3. from Tkinter import *
  4. import ttk
  5.  
  6.  
  7. today = datetime.date.today().strftime('%Y%m%d')
  8. hosts = {'applog': ['10.0.0.63', '/var/log/testlog.log', 'username', 'password'],
  9.          'serverlog': ['10.0.0.64', '/var/log/error.{}'.format(today)],
  10.          'applog2': ['10.0.0.65', '/home/username/testlog.log']}
  11.  
  12. needs_pass = ['10.0.0.63']
  13.  
  14.  
  15. def credentials():
  16.     def submit_cred():
  17.         if len(hosts[log.get()]) < 3:
  18.             hosts[log.get()].append(username_prompt.get())
  19.             hosts[log.get()].append(password_prompt.get())
  20.         prompt.destroy()
  21.         log_check()
  22.  
  23.     prompt = Toplevel()
  24.     prompt.title('Username and Password')
  25.  
  26.     ttkframe = ttk.Frame(prompt, padding='9')
  27.     ttkframe.grid(column=0, row=0, sticky=(N, W, E, S))
  28.     ttkframe.columnconfigure(0, weight=1)
  29.     ttkframe.rowconfigure(0, weight=1)
  30.  
  31.     ttk.Label(ttkframe, text='Enter your {} username'.format(hosts[log.get()][0])).grid(column=1, row=1, sticky=W)
  32.     user_prompt = ttk.Entry(ttkframe, width=30, textvariable=username_prompt)
  33.     user_prompt.grid(column=1, row=2, sticky=(W, E))
  34.  
  35.     ttk.Label(ttkframe, text='Enter your password.').grid(column=1, row=3, sticky=W)
  36.     pass_prompt = ttk.Entry(ttkframe, width=30, textvariable=password_prompt, show='*')
  37.     pass_prompt.grid(column=1, row=4, sticky=(W, E))
  38.  
  39.     ttk.Button(ttkframe, text='Submit', command=submit_cred).grid(column=1, row=5, sticky=W)
  40.  
  41.     for child in ttkframe.winfo_children(): child.grid_configure(padx=5, pady=2)
  42.  
  43.  
  44. def log_check(*args):
  45.     # Clear out any text in the box.
  46.     output.delete("1.0", END)
  47.  
  48.     # Get the info
  49.     host = hosts[log.get()][0]
  50.     log_loc = hosts[log.get()][1]
  51.     user = hosts[log.get()][2]
  52.     passwd = hosts[log.get()][3]
  53.  
  54.     # Create the object.
  55.     ssh = paramiko.SSHClient()
  56.     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  57.  
  58.     # Verify connectivity/authenticate.
  59.     try:
  60.         ssh.connect(host, username=user, password=passwd)
  61.     except Exception as e:
  62.         error = str(e)
  63.         if error.find('connection attempt failed') != -1:
  64.             output.insert(INSERT, 'Connection Failed')
  65.         elif 'Authentication failed' in error:
  66.             output.insert(INSERT, error)
  67.  
  68.     # Pass the command and get results.
  69.     stdin, stdout, stderr = ssh.exec_command("grep -i '{0}' {1} | tail -n {2}".format(query.get(), log_loc, tail.get()))
  70.     output.insert(INSERT, stdout.read())
  71.  
  72.  
  73. # Add select all support.
  74. def select_all(event):
  75.     output.tag_add(SEL, "1.0", END)
  76.     output.mark_set(INSERT, "1.0")
  77.     output.see(INSERT)
  78.     return 'break'
  79.  
  80.  
  81. # Parent Window Setup
  82. root = Tk()
  83. root.title('Log Check')
  84. root.bind("<Control-Key-a>", select_all)
  85. root.bind("<Control-Key-A>", select_all)
  86.  
  87. mainframe = ttk.Frame(root, padding='3') #L T R B or LR TB
  88. mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
  89. mainframe.columnconfigure(0, weight=1)
  90. mainframe.rowconfigure(0, weight=1)
  91.  
  92. # GUI Variables
  93. username_prompt = StringVar()
  94. password_prompt = StringVar()
  95. query = StringVar()
  96. tail = StringVar()
  97. log_chosen = StringVar()
  98.  
  99.  
  100. # Entry Options
  101. log = ttk.Combobox(mainframe, state='readonly',  textvariable=log_chosen)
  102. log['values'] = ('TimTest', 'DIRECTV', 'AMEX')
  103. log.current(0)
  104. log.grid(column=1, row=2, sticky=W)
  105.  
  106. search_box = ttk.Entry(mainframe, width=25, textvariable=query)
  107. search_box.grid(column=2, row=2, stick=W)
  108.  
  109. tail_box = ttk.Entry(mainframe, width=5, textvariable=tail)
  110. tail_box.grid(column=3, row=2, sticky=W)
  111.  
  112. submit = ttk.Button(mainframe, text='Submit',
  113.                     command=lambda: credentials() if hosts[log.get()][0] in needs_pass else log_check())
  114. submit.grid(column=4, row=2, stick=W)
  115.  
  116.  
  117. # Text Output
  118. output = Text(mainframe, relief=SUNKEN)
  119. output.grid(column=1, row=3, columnspan=4)
  120.  
  121. # Labels
  122. ttk.Label(mainframe, text='Choose Log').grid(column=1, row=1, sticky=W)
  123. ttk.Label(mainframe, text='Search For:').grid(column=2, row=1, sticky=W)
  124. ttk.Label(mainframe, text='How many lines?').grid(column=3, row=1, sticky=W)
  125.  
  126. # Mainloop
  127. for child in mainframe.winfo_children(): child.grid_configure(padx=3, pady=3)
  128. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement