Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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 ***")
Ejemplo n.º 3
0
def view_database():
    os.system("clear")
    interface.banner()
    print()
    db = Sqlite3()
    print_header()
    for row in db.view_db():
        print(row)
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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()