def local_logfiles(): os.system("clear") interface.banner() print() host_ip = socket.gethostbyname(socket.gethostname()) dir_listing, directory = logparsingFunctions.get_directory_location() logparsingFunctions.add_files_to_db(dir_listing, directory, host_ip)
def ssh_connect(): os.system('clear') interface.banner() print("-REMOTE SERVER CONNECTION-") print() while True: try: # Check for valid IP's by using socket module host_ip = input("Enter IP address:") socket.inet_aton(host_ip) break except socket.error: print("*** Not a valid IP, try again ***") while True: try: port = input("Enter SSH port(ENTER for DEFAULT:22):") if not port: port = 22 print("-DEFAULT port 22 used-") break else: port = int(port) break except: print("*** PORT entry ERROR, try again ***") user = input("Enter USER name:") # Uses getpass module to hide password entry in terminal password = getpass.getpass(prompt="PASSWORD for {}@{}:{}:".format( user, host_ip, port), stream=None) print() try: # uses Paramiko module for SSH/SFTP to remote hosts client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(host_ip, port, user, password) sftp = client.open_sftp() ssh_stdin, ssh_stdout, ssh_stderr = client.exec_command('ls /var/log') ssh_list = ssh_stdout.read().decode("utf-8") lines = ssh_list.split("\n") # Creates temp folder on host for reading files os.mkdir("/tmp/fail2ban") for line in lines: if "fail2ban" in line: sftp.get('/var/log/' + line, "/tmp/fail2ban/" + line) dir_listing, directory = logparsingFunctions.get_directory_location_remote( ) logparsingFunctions.add_files_to_db(dir_listing, directory, host_ip) # Deletes temp folder after reading files shutil.rmtree("/tmp/fail2ban") sftp.close() client.close() except: print() print("*** SSH Connection ERROR. Try again ***")
def view_database(): os.system("clear") interface.banner() print() db = Sqlite3() print_header() for row in db.view_db(): print(row)
def print_to_file(): os.system("clear") interface.banner() print() file_name = str(input("Enter NAME of file to print database to:")) print() print_header() db = Sqlite3() for row in db.view_db(): with open(file_name, 'a') as file: print(row) file.write(str(row) + "\n") print() print("Database written to file: {}".format(file_name))
def sort_main_choice(): while True: try: os.system("clear") interface.banner() interface.sort_view() sort = sort_db() if sort == "back": break print_header() db = Sqlite3() rows = db.view_sort(sort) for row in rows: print(row) enter_continue() except: print("Input ERROR, try again") break
def main(): while True: try: os.system("clear") interface.banner() interface.choice_1() choice = int(input("Choice:")) # Remote/ssh to logs if choice == 1: remoteConnect.ssh_connect() programFunctions.enter_continue() # Local logs if choice == 2: localConnect.local_logfiles() programFunctions.enter_continue() # View database if choice == 3: programFunctions.view_database() programFunctions.enter_continue() # Delete database if choice == 4: programFunctions.delete_database() programFunctions.enter_continue() # Sort/view database sub-menu if choice == 5: programFunctions.sort_main_choice() # Print to file if choice == 6: programFunctions.print_to_file() programFunctions.enter_continue() # Quit if choice == 7: break except: print() print("*** Entry ERROR. Try again... ***") programFunctions.enter_continue() os.system("clear") print("--------------------------------------------------") print(" Goodbye, and I'll miss you most of all scarecrow.") print("--------------------------------------------------") print()