Benutzer-Werkzeuge

Webseiten-Werkzeuge


event-action-python-aos-r8

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
event-action-python-aos-r8 [2020/09/09 13:09] bennyevent-action-python-aos-r8 [2024/06/09 10:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 315: Zeile 315:
   - Bei einer Automatisierung ist eine "yes/no"-Abfrage wie für den SSH-Host-Fingerprint für known_hosts eine Herausforderung die es zu lösen gilt   - Bei einer Automatisierung ist eine "yes/no"-Abfrage wie für den SSH-Host-Fingerprint für known_hosts eine Herausforderung die es zu lösen gilt
   - Damit die Verbindung per SSH/SCP erfolgreich ist, muss das identity_file mit korrekten Zugriffsrechten hinterlegt werden   - Damit die Verbindung per SSH/SCP erfolgreich ist, muss das identity_file mit korrekten Zugriffsrechten hinterlegt werden
 +  - Das Skript auf dem Switch hinterlegen
 +  - Mit "event-action" die CLI-Aktion "write memory flash-synchro" mit dem Skript verknüpfen
 +  - Den Vorgang testen
  
 === 1. SSH private/public Key erzeugen === === 1. SSH private/public Key erzeugen ===
Zeile 336: Zeile 339:
 </code> </code>
  
-=== 4. Korrekte Zugriffsrechte für ssh_private_key ===+=== 4. Skript für Export === 
 +Vorausgesetzt die Tipps aus diesem Artikel wurden angewendet, kann nun mit diesem Skript die Konfiguration extern abgelegt werden. Das folgende Skript hier abspeichern: **/flash/python/chassis_trap.py** 
  
 +<file python chassis_trap.py>
 +#!/usr/bin/env python3
  
 +import sys
 +import os
 +import getopt
 +import json
 +import subprocess
  
 +# Based upon work done by Patricio Martelo and Benny Eggerstedt in 2015
 +# Some corrections and enhancements done by Benny in 2020
 +
 +# Variables to set by customer
 +ssh_priv_key = "/flash/python/omniswitch_private_ssh_key"
 +config_to_backup = "/flash/working/vcboot.cfg"
 +scp_target_user = "benny"
 +scp_host = "shiva.home" # could also be an IP address
 +scp_path = "/home/benny/configs/" # full path or relative to ~ of the user, include the "/" at the end!
 +
 +# Get system name
 +system_name = os.uname()[1].replace(" ", "_")
 +
 +# Uncomment during early stage of development
 +#print(sys.argv)
 +
 +# Load the data that is being sent to us
 +# -t holds the traptype
 +# -d holds the trapdata
 +try:
 +    opts, args = getopt.getopt(sys.argv[1:], "t:d:")
 +except getopt.GetoptError as err:
 +    print(err)
 +    print("{0}".format(sys.argv))
 +    sys.exit(2)
 +traptype = "(none)"
 +trapdata = "{}"
 +
 +# Go through the data in opts and allocate it properly
 +# traptype gets the value from -t
 +# trapdata gets the value from -d
 +for o, a in opts:
 +    if o == "-t":
 +        traptype = a
 +    elif o == "-d":
 +        trapdata = a
 +
 +#print("traptype: {0}".format(traptype))
 +#print("trapdata: {0}".format(trapdata))
 +
 +#print(json.loads(trapdata))
 +
 +trapdetail = json.loads(trapdata)
 +
 +#print(trapdetail)
 +
 +if trapdetail["chassisTrapsAlertNumber"] == 5:
 +    # This type of trap is sent when write memory flash-synchro finished
 +    #print("detected write memory flash synchro")
 +    # When the "write memory flash-synchro" was successful, export the configuration
 +    if "success" in trapdetail["chassisTrapsAlertDescr"]:
 +        system_date = subprocess.check_output(["system", "date"]).decode("ascii").strip().replace("/", "_")
 +        system_time = subprocess.check_output(["system", "time"]).decode("ascii").strip().replace(":", "_")
 +        timestamp = system_date + "_" + system_time 
 +        os.system("scp -v -i {0} -o StrictHostKeyChecking=no {1} {2}@{3}:{4}{5}_{6}.cfg".format(ssh_priv_key, config_to_backup, scp_target_user, scp_host, scp_path, system_name, timestamp))
 +        print("Process finished!")
 +</file>
 +
 +**5. Mit "event-action" den Trap mit dem Skript verknüpfen:**
 +<code>
 +Switch-> event-action trap chassisTrapsAlert script /flash/python/chassis_trap.py
 +</code>
 +
 +**6. Testen:**
 +<code>
 +Switch-> write memory flash-synchro
 +</code>
 +
 +**Ausgabe auf der Switch-Konsole:**
 +<code>
 +{'sysUpTime': 85955617, 'physicalIndex': 65, 'chassisTrapsObjectType': 5, 'chassisTrapsObjectNumber': 65, 'chassisTrapsAlertNumber': 4, 'chassisTrapsAlertDescr': 'CERTIFY w/FLASH SYNCHRO process started'}
 +
 +Wed Sep  9 18:16:07 : ChassisSupervisor MipMgr INFO message:
 ++++ Copy running to certified succeeded
 +{'sysUpTime': 85961949, 'physicalIndex': 65, 'chassisTrapsObjectType': 5, 'chassisTrapsObjectNumber': 65, 'chassisTrapsAlertNumber': 5, 'chassisTrapsAlertDescr': 'CERTIFY process completed successfully'}
 +Please wait...
 +Executing: program /bin/tps/ssh host shiva.home, user benny, command scp -v -t /home/benny/configs/Switch_09_09_2020_18_16_07.cfg
 +Sending file modes: C0644 4312 vcboot.cfg
 +Sink: C0644 4312 vcboot.cfg
 +Process finished!
 +</code>
 ===== Fehleranalyse ===== ===== Fehleranalyse =====
  
event-action-python-aos-r8.1599656964.txt.gz · Zuletzt geändert: 2024/06/09 10:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki