Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import paramiko
- import datetime
- from Tkinter import *
- import ttk
- today = datetime.date.today().strftime('%Y%m%d')
- hosts = {'applog': ['10.0.0.63', '/var/log/testlog.log', 'username', 'password'],
- 'serverlog': ['10.0.0.64', '/var/log/error.{}'.format(today)],
- 'applog2': ['10.0.0.65', '/home/username/testlog.log']}
- needs_pass = ['10.0.0.63']
- def credentials():
- def submit_cred():
- if len(hosts[log.get()]) < 3:
- hosts[log.get()].append(username_prompt.get())
- hosts[log.get()].append(password_prompt.get())
- prompt.destroy()
- log_check()
- prompt = Toplevel()
- prompt.title('Username and Password')
- ttkframe = ttk.Frame(prompt, padding='9')
- ttkframe.grid(column=0, row=0, sticky=(N, W, E, S))
- ttkframe.columnconfigure(0, weight=1)
- ttkframe.rowconfigure(0, weight=1)
- ttk.Label(ttkframe, text='Enter your {} username'.format(hosts[log.get()][0])).grid(column=1, row=1, sticky=W)
- user_prompt = ttk.Entry(ttkframe, width=30, textvariable=username_prompt)
- user_prompt.grid(column=1, row=2, sticky=(W, E))
- ttk.Label(ttkframe, text='Enter your password.').grid(column=1, row=3, sticky=W)
- pass_prompt = ttk.Entry(ttkframe, width=30, textvariable=password_prompt, show='*')
- pass_prompt.grid(column=1, row=4, sticky=(W, E))
- ttk.Button(ttkframe, text='Submit', command=submit_cred).grid(column=1, row=5, sticky=W)
- for child in ttkframe.winfo_children(): child.grid_configure(padx=5, pady=2)
- def log_check(*args):
- # Clear out any text in the box.
- output.delete("1.0", END)
- # Get the info
- host = hosts[log.get()][0]
- log_loc = hosts[log.get()][1]
- user = hosts[log.get()][2]
- passwd = hosts[log.get()][3]
- # Create the object.
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- # Verify connectivity/authenticate.
- try:
- ssh.connect(host, username=user, password=passwd)
- except Exception as e:
- error = str(e)
- if error.find('connection attempt failed') != -1:
- output.insert(INSERT, 'Connection Failed')
- elif 'Authentication failed' in error:
- output.insert(INSERT, error)
- # Pass the command and get results.
- stdin, stdout, stderr = ssh.exec_command("grep -i '{0}' {1} | tail -n {2}".format(query.get(), log_loc, tail.get()))
- output.insert(INSERT, stdout.read())
- # Add select all support.
- def select_all(event):
- output.tag_add(SEL, "1.0", END)
- output.mark_set(INSERT, "1.0")
- output.see(INSERT)
- return 'break'
- # Parent Window Setup
- root = Tk()
- root.title('Log Check')
- root.bind("<Control-Key-a>", select_all)
- root.bind("<Control-Key-A>", select_all)
- mainframe = ttk.Frame(root, padding='3') #L T R B or LR TB
- mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
- mainframe.columnconfigure(0, weight=1)
- mainframe.rowconfigure(0, weight=1)
- # GUI Variables
- username_prompt = StringVar()
- password_prompt = StringVar()
- query = StringVar()
- tail = StringVar()
- log_chosen = StringVar()
- # Entry Options
- log = ttk.Combobox(mainframe, state='readonly', textvariable=log_chosen)
- log['values'] = ('TimTest', 'DIRECTV', 'AMEX')
- log.current(0)
- log.grid(column=1, row=2, sticky=W)
- search_box = ttk.Entry(mainframe, width=25, textvariable=query)
- search_box.grid(column=2, row=2, stick=W)
- tail_box = ttk.Entry(mainframe, width=5, textvariable=tail)
- tail_box.grid(column=3, row=2, sticky=W)
- submit = ttk.Button(mainframe, text='Submit',
- command=lambda: credentials() if hosts[log.get()][0] in needs_pass else log_check())
- submit.grid(column=4, row=2, stick=W)
- # Text Output
- output = Text(mainframe, relief=SUNKEN)
- output.grid(column=1, row=3, columnspan=4)
- # Labels
- ttk.Label(mainframe, text='Choose Log').grid(column=1, row=1, sticky=W)
- ttk.Label(mainframe, text='Search For:').grid(column=2, row=1, sticky=W)
- ttk.Label(mainframe, text='How many lines?').grid(column=3, row=1, sticky=W)
- # Mainloop
- for child in mainframe.winfo_children(): child.grid_configure(padx=3, pady=3)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement