Új hozzászólás Aktív témák

  • jerry311

    nagyúr

    válasz sztanozs #3714 üzenetére

    Remelem nem maradt benne jelszo :DDD

    #!/usr/bin/env python
    # coding=utf-8

    """
    Python script to get NAT details from routers, and upload to SharePoint.

    This script feeds into Power Automate

    Version Control
    - 1.0 Initial Release

    """

    # Modules to load
    import datetime
    import requests
    import crassh
    import logging

    # Static variables 1
    VPN1 = "1.1.1.1"
    VPN3 = "2.2.2.2"
    NAT3 = "3.3.3.3"
    authfile = "/home/jerry311/credz.txt" # Uid & Passowrd are stored in an external file
    url = "https://removed-site-name.azurewebsites.net/api/upload" # Upload URL of API
    querystring = {"clientID": "removed-client-id", "docPath": "/Shared%20Documents/Daily%20NAT%20File/"} # Client ID for authentication, destination path on SharePoint
    debug = False # Developer debugging

    #Logging setup
    logging.basicConfig(filename='scripts.log', filemode='a', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    """
    The format for credz.txt is
    username: Uid
    password: PW
    """

    def main():
    """
    Main Code Block

    Logs onto router, gets the output, and uploads to file on SharePoint.
    """

    # Create timestamp to be used in file name
    timestamp = datetime.datetime.now().strftime("%y%m%d-%H%M%S")

    # Get Uid & Password from credz.txt
    username, password = crassh.readauthfile(authfile)

    try:
    # Connect to router and get output
    logging.warning('CRASSH connection start')
    hostname = crassh.connect(NAT3, username, password, sysexit=True)
    output = crassh.send_command("show run | in Current configuration|extendable", hostname)
    crassh.disconnect()
    logging.warning('CRASSH finished')

    # Create file name to be used on SharePoint
    txtoutputfilename = (hostname + "-" + timestamp + ".txt")
    logging.warning('File name: ' + txtoutputfilename)

    # Create HTML payload from output
    payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"\"; filename=\"" + str(txtoutputfilename) + "\"\r\nContent-Type: text / plain\r\n\r\n" + str(output) + "\r\n\r\n-----011000010111000001101001--\r\n"
    headers = {
    "apikey": "removed-api-key",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
    }
    logging.warning('Payload generated')

    # Upload to API
    response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
    logging.warning('API response: ' + response)

    # Print debug info if debug variable is set to True. Uncomment print(output) if you want to see what we collected from router. Lots of text!!!

    if debug:
    logging.debug('Hostname: ' + hostname)
    logging.debug('Timestamp: ' + timestamp)
    logging.debug('CRASSH output: ' + output)
    logging.debug('File name: ' + txtoutputfilename)
    logging.debug('Payload ' + payload)
    logging.debug('API response: ' + response)
    except:
    logging.warning('Something went wrong')
    pass # If something fails, move onto next router in the list.

    # If run from interpreter, run main code function.

    if __name__ == "__main__":
    main()

Új hozzászólás Aktív témák