====== 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. - 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) - 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 - 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 === 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 @:/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** #!/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 @:/path/to/configbackup/filename.cfg