Benutzer-Werkzeuge

Webseiten-Werkzeuge


event-action-python-aos-r8

Automatisierung mit event-action und Python und AOS Release 8

In AOS Release 8 kann mit „event-action“ eine Automatisierung erreicht werden.

Einstieg

Wo werden die Python Skripte abgelegt?

Switch-> pwd
/flash/python

In diesem Verzeichnis liegen bereits zwei Skripte default_broker_vso.py und iec_config.py, diese sollte man nicht ändern/löschen.

Welche Python Skripte werden bei welchen Traps ausgeführt?

Dies ist über das Kommando show event-action zu sehen.

Switch-> show event-action 
Script Time Limit (seconds): 60

 Type                   Name                      Script (/flash/python/...)    
------+---------------------------------------+----------------------------------
trap   alaDhcpVsoBrokerIpAddress                default_broker_vso.py

Tipp: "snmp-trap absorption" abschalten

Zumindest während der Entwicklung empfehlen wir „snmp-trap absorption“ abzuschalten. Standardmäßig werden SNMP-Traps für 15 Sekunden nach ihrem letzten Auftreten absorbiert (und damit startet auch kein Skript).

Switch-> snmp-trap absorption disable 

Switch-> show snmp-trap config 
Absorption service : disabled
Traps to WebView : enabled

id trap name                            family          absorption   admin-state
--+------------------------------------+---------------+------------+-------------
 0 coldStart                            chassis         15 seconds     enable
 1 warmStart                            chassis         15 seconds     enable
 2 linkDown                             interface       15 seconds     enable
 3 linkUp                               interface       15 seconds     enable
 4 authenticationFailure                snmp            15 seconds     enable
 5 entConfigChange                      module          15 seconds     enable
 6 policyEventNotification              qos             15 seconds     enable
 7 chassisTrapsStr                      chassis         15 seconds     enable
 8 chassisTrapsAlert                    chassis         15 seconds     enable
 9 chassisTrapsStateChange              chassis         15 seconds     enable
10 chassisTrapsMacOverlap               module          15 seconds     enable
11 vrrpTrapNewMaster                    vrrp            15 seconds     enable
12 vrrpTrapAuthFailure                  vrrp            15 seconds     enable
13 healthMonModuleTrap                  health          15 seconds     enable
14 healthMonPortTrap                    health          15 seconds     enable
15 healthMonCmmTrap                     health          15 seconds     enable
16 bgpEstablished                       bgp             15 seconds     enable
17 bgpBackwardTransition                bgp             15 seconds     enable
18 esmDrvTrapDropsLink                  interface       15 seconds     enable
19 portViolationTrap                    interface       15 seconds     enable
20 dvmrpNeighborLoss                    ipmr            15 seconds     enable
21 dvmrpNeighborNotPruning              ipmr            15 seconds     enable
22 risingAlarm                          rmon            15 seconds     enable
23 fallingAlarm                         rmon            15 seconds     enable
24 stpNewRoot                           stp             15 seconds     enable
25 stpRootPortChange                    stp             15 seconds     enable
26 mirrorConfigError                    pmm             15 seconds     enable
27 mirrorUnlikeNi                       pmm             15 seconds     enable
28 slbTrapOperStatus                    loadbalancing   15 seconds     enable
29 sessionAuthenticationTrap            session         15 seconds     enable
30 trapAbsorptionTrap                   none             0 seconds     enable
31 alaDoSTrap                           ip              15 seconds     enable
32 ospfNbrStateChange                   ospf            15 seconds     enable
33 ospfVirtNbrStateChange               ospf            15 seconds     enable
34 lnkaggAggUp                          linkaggregation 15 seconds     enable
35 lnkaggAggDown                        linkaggregation 15 seconds     enable
36 lnkaggPortJoin                       linkaggregation 15 seconds     enable
37 lnkaggPortLeave                      linkaggregation 15 seconds     enable
38 lnkaggPortRemove                     linkaggregation 15 seconds     enable
39 monitorFileWritten                   pmm             15 seconds     enable
40 alaVrrp3TrapProtoError               vrrp            15 seconds     enable
41 alaVrrp3TrapNewMaster                vrrp            15 seconds     enable
42 chassisTrapsPossibleDuplicateMac     chassis         15 seconds     enable
43 lldpRemTablesChange                  aip             15 seconds     enable
44 pimNeighborLoss                      ipmr            15 seconds     enable
45 pimInvalidRegister                   ipmr            15 seconds     enable
46 pimInvalidJoinPrune                  ipmr            15 seconds     enable
47 pimRPMappingChange                   ipmr            15 seconds     enable
48 pimInterfaceElection                 ipmr            15 seconds     enable
49 pimBsrElectedBSRLostElection         ipmr            15 seconds     enable
50 pimBsrCandidateBSRWinElection        ipmr            15 seconds     enable
51 lpsViolationTrap                     bridge          15 seconds     enable
52 lpsPortUpAfterLearningWindowExpiredT bridge          15 seconds     enable
53 lpsLearnTrap                         bridge          15 seconds     enable
54 gvrpVlanLimitReachedEvent            bridge          15 seconds     enable
55 alaNetSecPortTrapAnomaly             netsec          15 seconds     enable
56 alaNetSecPortTrapQuarantine          netsec          15 seconds     enable
57 ifMauJabberTrap                      interface       15 seconds     enable
58 udldStateChange                      interface       15 seconds     enable
59 ndpMaxLimitReached                   ip              15 seconds     enable
60 ripRouteMaxLimitReached              rip             15 seconds     enable
61 ripngRouteMaxLimitReached            ripng           15 seconds     enable
62 alaErpRingStateChanged               bridge          15 seconds     enable
63 alaErpRingMultipleRpl                bridge          15 seconds     enable
64 alaErpRingRemoved                    bridge          15 seconds     enable
65 ntpMaxAssociation                    ntp             15 seconds     enable
66 ddmTemperatureThresholdViolated      interface       15 seconds     enable
67 ddmVoltageThresholdViolated          interface       15 seconds     enable
68 ddmCurrentThresholdViolated          interface       15 seconds     enable
69 ddmTxPowerThresholdViolated          interface       15 seconds     enable
70 ddmRxPowerThresholdViolated          interface       15 seconds     enable
71 webMgtServerErrorTrap                webmgt          15 seconds     enable
72 multiChassisIpcVlanUp                mcm             15 seconds     enable
73 multiChassisIpcVlanDown              mcm             15 seconds     enable
74 multiChassisMisconfigurationFailure  mcm             15 seconds     enable
75 multiChassisHelloIntervalConsisFailu mcm             15 seconds     enable
76 multiChassisStpModeConsisFailure     mcm             15 seconds     enable
77 multiChassisStpPathCostModeConsisFai mcm             15 seconds     enable
78 multiChassisVflinkStatusConsisFailur mcm             15 seconds     enable
79 multiChassisStpBlockingStatus        mcm             15 seconds     enable
80 multiChassisLoopDetected             mcm             15 seconds     enable
81 multiChassisHelloTimeout             mcm             15 seconds     enable
82 multiChassisVflinkDown               mcm             15 seconds     enable
83 multiChassisVFLMemberJoinFailure     mcm             15 seconds     enable
84 alaDHLVlanMoveTrap                   vlan            15 seconds     enable
85 alaDhcpClientAddressAddTrap          ip-dhcp         15 seconds     enable
86 alaDhcpClientAddressExpiryTrap       ip-dhcp         15 seconds     enable
87 alaDhcpClientAddressModifyTrap       ip-dhcp         15 seconds     enable
88 vRtrIsisDatabaseOverload             isis            15 seconds     enable
89 vRtrIsisManualAddressDrops           isis            15 seconds     enable
90 vRtrIsisCorruptedLSPDetected         isis            15 seconds     enable
91 vRtrIsisMaxSeqExceedAttempt          isis            15 seconds     enable
92 vRtrIsisIDLenMismatch                isis            15 seconds     enable
93 vRtrIsisMaxAreaAddrsMismatch         isis            15 seconds     enable
94 vRtrIsisOwnLSPPurge                  isis            15 seconds     enable
95 vRtrIsisSequenceNumberSkip           isis            15 seconds     enable
96 vRtrIsisAutTypeFail                  isis            15 seconds     enable
97 vRtrIsisAuthFail                     isis            15 seconds     enable
98 vRtrIsisVersionSkew                  isis            15 seconds     enable
99 vRtrIsisAreaMismatch                 isis            15 seconds     enable
100 vRtrIsisRejectedAdjacency           isis            15 seconds     enable
101 vRtrIsisLSPTooLargeToPropagate      isis            15 seconds     enable
102 vRtrIsisOrigLSPBufSizeMismatch      isis            15 seconds     enable
103 vRtrIsisProtoSuppMismatch           isis            15 seconds     enable
104 vRtrIsisAdjacencyChange             isis            15 seconds     enable
105 vRtrIsisCircIdExhausted             isis            15 seconds     enable
106 vRtrIsisAdjRestartStatusChange      isis            15 seconds     enable
107 mvrpVlanLimitReachedEvent           bridge          15 seconds     enable
108 alaHAVlanClusterPeerMismatch        ha-vlan         15 seconds     enable
109 alaHAVlanMCPeerMismatch             ha-vlan         15 seconds     enable
110 alaHAVlanDynamicMAC                 ha-vlan         15 seconds     enable
111 unpMcLagMacIgnored                  da-unp          15 seconds     enable
112 unpMcLagConfigInconsistency         da-unp          15 seconds     enable
113 multiChassisGroupConsisFailure      mcm             15 seconds     enable
114 multiChassisTypeConsisFailure       mcm             15 seconds     enable
115 alaPimNonBidirHello                 ipmr            15 seconds     enable
116 dot1agCfmFaultAlarm                 bridge          15 seconds     enable
117 alaSaaIPIterationCompleteTrap       system          15 seconds     enable
118 alaSaaEthIterationCompleteTrap      system          15 seconds     enable
119 alaSaaMacIterationCompleteTrap      system          15 seconds     enable
120 virtualChassisStatusChange          vcm             15 seconds     enable
121 virtualChassisRoleChange            vcm             15 seconds     enable
122 virtualChassisVflStatusChange       vcm             15 seconds     enable
123 virtualChassisVflMemberPortStatusCh vcm             15 seconds     enable
124 virtualChassisVflMemberPortJoinFail vcm             15 seconds     enable
125 lldpV2RemTablesChange               aip             15 seconds     enable
126 vRtrLdpInstanceStateChange          mpls            15 seconds     enable
127 evbFailedCdcpTlvTrap                evb             15 seconds     enable
128 evbFailedEvbTlvTrap                 evb             15 seconds     enable
129 evbUnknownVsiManagerTrap            evb             15 seconds     enable
130 evbVdpAssocTlvTrap                  evb             15 seconds     enable
131 evbCdcpLldpExpiredTrap              evb             15 seconds     enable
132 evbTlvExpiredTrap                   evb             15 seconds     enable
133 evbVdpKeepaliveExpiredTrap          evb             15 seconds     enable
134 smgrServiceError                    svcmgr          15 seconds     enable
135 smgrServiceHwError                  svcmgr          15 seconds     enable
136 smgrSapError                        svcmgr          15 seconds     enable
137 smgrSapHwError                      svcmgr          15 seconds     enable
138 smgrSdpError                        svcmgr          15 seconds     enable
139 smgrSdpHwError                      svcmgr          15 seconds     enable
140 smgrSdpBindError                    svcmgr          15 seconds     enable
141 smgrSdpBindHwError                  svcmgr          15 seconds     enable
142 smgrGeneralError                    svcmgr          15 seconds     enable
143 smgrStatusChange                    svcmgr          15 seconds     enable
144 portViolationNotificationTrap       interface       15 seconds     enable
145 multiChassisConsisFailureRecovered  mcm             15 seconds     enable
146 alaSaaPacketLossTrap                system          15 seconds     enable
147 alaSaaJitterThresholdYellowTrap     system          15 seconds     enable
148 alaSaaRTTThresholdYellowTrap        system          15 seconds     enable
149 alaSaaJitterThresholdRedTrap        system          15 seconds     enable
150 alaSaaRTTThresholdRedTrap           system          15 seconds     enable
151 chassisTrapsDuplicateMacCleared     chassis         15 seconds     enable
152 alaFipsResourceThresholdReached     fips            15 seconds     enable
153 virtualChassisUpgradeComplete       vcm             15 seconds     enable
154 appFPSignatureMatchTrap             appfp           15 seconds     enable
155 virtualChassisVflSpeedTypeChange    vcm             15 seconds     enable
156 alaSIPSnoopingACLPreemptedBySOSCall qos             15 seconds     enable
157 alaSIPSnoopingRTCPOverThreshold     sip-snooping    15 seconds     enable
158 alaSIPSnoopingRTCPPktsLost          qos             15 seconds     enable
159 alaSIPSnoopingSignallingLost        qos             15 seconds     enable
160 alaSIPSnoopingCallRecordsFileMoved  sip-snooping    15 seconds     enable
161 alaIPv6NeighborLimitExceeded        ip              15 seconds     enable
162 alaIPv6NeighborVRFLimitExceeded     ip              15 seconds     enable
163 alaIPv6InterfaceNeighborLimitExceed ip              15 seconds     enable
164 alaDyingGaspTrap                    interface       15 seconds     enable
165 alaDhcpSrvLeaseUtilizationThreshold dhcp-server     15 seconds     enable
166 alaDHCPv6SrvLeaseUtilizationThresho dhcpv6-server   15 seconds     enable
167 smgrServiceStatusChange             svcmgr          15 seconds     enable
168 smgrSapStatusChange                 svcmgr          15 seconds     enable
169 smgrSdpStatusChange                 svcmgr          15 seconds     enable
170 smgrSdpBindStatusChange             svcmgr          15 seconds     enable
171 alaPethPwrSupplyConflictTrap        module          15 seconds     enable
172 alaPethPwrSupplyNotSupportedTrap    module          15 seconds     enable
173 chasTrapsBPSLessAllocSysPwr         chassis         15 seconds     enable
174 chasTrapsBPSStateChange             chassis         15 seconds     enable
175 chasTrapsNiBPSFETStateChange        chassis         15 seconds     enable
176 alaDhcpBindingDuplicateEntry        ip-dhcp         15 seconds     enable
177 alaVCSPProtectionTrap               vcm             15 seconds     enable
178 alaVCSPRecoveryTrap                 vcm             15 seconds     enable
179 pethPsePortOnOffNotification        module          15 seconds     enable
180 pethMainPowerUsageOnNotification    module          15 seconds     enable
181 pethMainPowerUsageOffNotification   module          15 seconds     enable
182 chasTrapsBPSFwUpgradeAlert          chassis         15 seconds     enable
183 alaAppMonAppRecordFileCreated       app-mon         15 seconds     enable
184 alaAppMonFlowRecordFileCreated      app-mon         15 seconds     enable
185 alaDPIFlowRecordFileCreated         dpi             15 seconds     enable
186 alaLbdStateChangeToShutdown         lbd             15 seconds     enable
187 alaLbdStateChangeForClearViolationA lbd             15 seconds     enable
188 alaLbdStateChangeForAutoRecovery    lbd             15 seconds     enable
189 alaAutoConfigAutoFabricEnableTrap   unknown         15 seconds     enable
190 alaVMSnoopingVMLearntAlert          vm-snooping     15 seconds     enable
191 alaVMSnoopingVMRemovedAlert         vm-snooping     15 seconds     enable
192 alaVMSnoopingReservedHwResourceLimi vm-snooping     15 seconds     enable
193 alaDistArpItfChange                 ip              15 seconds     enable
194 alaDistArpNiThreshold               ip              15 seconds     enable
195 smgrVxlanSdpBindStatusChange        svcmgr          15 seconds     enable
196 alaAutoFabricSTPModeChangeAlert     fips            15 seconds     enable
197 alaKerberosReqTimeoutTrap           da-unp          15 seconds     enable
198 alaKerberosInactivityTimerExpiryTra da-unp          15 seconds     enable
199 alaKerberosRateLimitExceed          da-unp          15 seconds     enable
200 pethMainPowerUsageNiFailNotificatio module          15 seconds     enable
201 systemSwlogSizeTrap                 system          15 seconds     enable
202 esmStormThresholdViolationStatus    interface       15 seconds     enable
203 alaSTPLoopGuardError                stp             15 seconds     enable
204 alaSTPLoopGuardRecovery             stp             15 seconds     enable
205 alaLldpTrustViolation               aip             15 seconds     enable
206 alaLicenseManagerDemoDayAlert       licensing       15 seconds     enable
207 alaAaaUserCreation                  aaa             15 seconds     enable
208 alaAaaUserDeletion                  aaa             15 seconds     enable
209 alaAaaUserModification              aaa             15 seconds     enable
210 systemSwlogFailureTraps             system          15 seconds     enable
211 pethPseMainTemperatureUpAlert       module          15 seconds     enable
212 pethPseMainTemperatureDownAlert     module          15 seconds     enable
213 systemRebootSwlogFailureTrap        system          15 seconds     enable
214 ospfv3RestartStatusChange           ospfv3          15 seconds     enable
215 ospfv3NbrRestartHelperStatusChange  ospfv3          15 seconds     enable
216 ospfv3VirtNbrRestartHelperStatusCha ospfv3          15 seconds     enable
217 smgrL2greSdpBindStatusChange        svcmgr          15 seconds     enable
218 dot3OamThresholdEvent               bridge          15 seconds     enable
219 dot3OamNonThresholdEvent            bridge          15 seconds     enable
220 alaDot3OamThresholdEventClear       bridge          15 seconds     enable
221 alaDot3OamNonThresholdEventClear    bridge          15 seconds     enable
222 alaAlarmReplayAlarmInputEvent       alarm-manager   15 seconds     enable
223 alaHWRoutingCapacityExceeded        ip              15 seconds     enable
224 vrrpv3NewMaster                     vrrp            15 seconds     enable
225 vrrpv3ProtoError                    vrrp            15 seconds     enable
226 alaDhcpBindingTcamFail              ip-dhcp         15 seconds     enable
227 systemStorageLockTrap               storage-locking 15 seconds     enable
228 alaDhcpIsfDrop                      ip-dhcp         15 seconds     enable
229 alaDaRouterAuthUserPassedAuthThresh da-unp          15 seconds     enable
230 alaDaRouterAuthUserMaxRetryFailed   da-unp          15 seconds     enable
231 alaDaRouterAuthUserFailedAuthThresh da-unp          15 seconds     enable
232 alaDaRouterAuthConfigThresholdExcee da-unp          15 seconds     enable
233 alaDaRouterAuthMaxCapacityReached   da-unp          15 seconds     enable
234 alaTestOamTxDoneTrap                bridge          15 seconds     enable
235 alaTestOamRxReadyTrap               bridge          15 seconds     enable
236 alaTestOamTestAbortTrap             bridge          15 seconds     enable
237 alaTestOamGroupTxDoneTrap           bridge          15 seconds     enable
238 alaTestOamGroupRxReadyTrap          bridge          15 seconds     enable
239 alaTestOamGroupAbortTrap            bridge          15 seconds     enable
240 alaTestOamStatsWriteDoneTrap        bridge          15 seconds     enable
241 alaDhcpv6IsfTcamFail                ip              15 seconds     enable
242 alaHWArpCapacityExceeded            ip              15 seconds     enable
243 alaHWMacCapacityExceeded            capability      15 seconds     enable
244 alaDaUnpMaxUserExceeded             da-unp          15 seconds     enable
245 alaDaUnpHWResourceExhaust           da-unp          15 seconds     enable
246 alaDhcpVsoBrokerIpAddress           ip-dhcp         15 seconds     enable

Ein einfaches Beispiel als Codegerüst: chassis_trap.py

In diesem Beispiel nehmen wir ein einfach per CLI zu erzeugenden SNMP Trap „debug generate trap 10“ und geben den Inhalt auf der seriellen Konsole (!) aus - also nicht der SSH-Session.

Switch-> vi /flash/python/chassis_trap.py

#!/usr/bin/env python3

import sys

print(sys.argv)

Switch-> debug trap generate 10       
Simulated trapId 10 : expected

# Ausgabe auf der seriellen Konsole:
['/flash/python/chassis_trap.py', '-t', 'chassisTrapsMacOverlap', '-d', '{"sysUpTime":82768127,"physicalIndex":65,"chasTrapMacRangeIndex":1}']

Fortgeschritten

Anwendungsfall: OmniSwitch-Konfiguration via scp auf Server exportieren

Damit der OmniSwitch nach erfolgreichem „write memory flash-synchro“ per scp auf einen externen Server exportiert, müssen ein paar Voraussetzungen erfüllt sein.

  1. Ein SSH private/public Key für den OmniSwitch muss hinterlegt sein (dabei ist der private-key auf dem OmniSwitch und der public-key auf dem Server in ~/.ssh/authorized_keys)
  2. 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
  3. Damit die Verbindung per SSH/SCP erfolgreich ist, muss das identity_file mit korrekten Zugriffsrechten hinterlegt werden
  4. Das Skript auf dem Switch hinterlegen
  5. Mit „event-action“ die CLI-Aktion „write memory flash-synchro“ mit dem Skript verknüpfen
  6. Den Vorgang testen

1. SSH private/public Key erzeugen

ssh-keygen -t rsa -b 2048 -C "omniswitch@home"

Der resultierende id_rsa.pub-Key muss für den Benutzer in ~/.ssh/authorized_keys hinterlegt werden. Der id_rsa (private-key) muss auf den Switch (die Switches) kopiert und dort mit chmod 600 /path/to/id_rsa mit den korrekten Zugriffsrechten versehen werden.

2. Automatisierung von SSH-Host-Fingerprint yes/no

Der Zusatz -o StrictHostKeyChecking=no sollte nur verwendet werden, wenn man mit der Konsequenz einer potentiellen MITM-Attacke leben kann. Bitte beachten dass das Skript fehlschlagen wird, wenn sich der SSH-Host-Fingerprint ändert. Das könnte man zwar auch wegkonfigurieren, aber ich halte es für keine gute Idee.

Switch-> scp -i /path/to/omniswitch_private_ssh_key -o StrictHostKeyChecking=no /flash/working/vcboot.cfg <username>@<server>:/path/to/configbackup/filename.cfg

3. Korrekte Zugriffsrechte für ssh_private_key

Switch-> chmod 600 /path/to/omniswitch_private_ssh_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

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!")

5. Mit „event-action“ den Trap mit dem Skript verknüpfen:

Switch-> event-action trap chassisTrapsAlert script /flash/python/chassis_trap.py

6. Testen:

Switch-> write memory flash-synchro

Ausgabe auf der Switch-Konsole:

{'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!

Fehleranalyse

scp lost connection

Wenn die folgende Fehlermeldung auftaucht, liegt entweder ein Kommunikationsfehler vor oder das identity_file ist für zuviele Nutzer lesbar/editierbar.

Please wait...
lost connection

Lösung:

Switch-> chmod 600 /path/to/omniswitch_private_key

scp known_hosts

(Abfrage der yes/no SSH Fingerprint-Bestätigung deaktivieren.)

Der Zusatz -o StrictHostKeyChecking=no führt dazu dass man die Identität des Servers nicht bestätigen muss. Die Identität des Servers wird aber trotzdem in ~/.ssh/known_hosts abgelegt und wenn der Fingerprint sich ändert wird das Skript fehlschlagen.

scp -i /path/to/omniswitch_private_ssh_key -o StrictHostKeyChecking=no /flash/working/vcboot.cfg <username>@<server>:/path/to/configbackup/filename.cfg
event-action-python-aos-r8.txt · Zuletzt geändert: 2020/09/10 17:59 von benny