सब, मैं अजगर के लिए बिल्कुल नया हूं, लेकिन स्क्रिप्ट लिखने के लिए मेरा दृष्टिकोण पठनीयता का त्याग किए बिना कोड की कुछ पंक्तियों का उपयोग करने का प्रयास करना है। ऐसा कहने के साथ, मैंने स्क्रिप्ट के साथ यही करने की कोशिश की।

मेरे पास एक स्क्रिप्ट है जो Pysnmp के माध्यम से सिस्को स्विच से या तो चल रही है या स्टार्टअप कॉन्फ़िगरेशन प्राप्त करती है और इसे एक TFTP सर्वर पर भेजती है। इसके लिए आवश्यक है कि स्विच पर कई OID का मान सेट किया जाए। जब मैंने snmp के माध्यम से एक ही setCmdकमांड पर कई OID का मान सेट करने का प्रयास किया:

g = setCmd(SnmpEngine(),
                   CommunityData(snmp_community),
                   UdpTransportTarget((host_ip, 161)),
                   ContextData(),
                   ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyProtocol', random_number), 1),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopySourceFileType', random_number), users_numeric_entry),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyDestFileType', random_number), 1),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyServerAddress', random_number), '10.10.11.100'),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyFileName', random_number), destination_file),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyEntryRowStatus', random_number), 1)
                   )

        next(g)

मैं स्विच (डीबग के माध्यम से) पर देख सकता हूं कि एसएनएमपी पैकेट वितरित किए जाते हैं, लेकिन उन्हें लागू करते समय एक समय मुद्दा होना चाहिए (ओआईडी के मूल्यों को सेट करना)। With that being said, is there a way to insert a few millisecond delay between each setCmd command?

जब प्रत्येक OID का मान अलग-अलग सेट किया जाता है, तो मेरी स्क्रिप्ट अपेक्षानुसार काम करती है, और कॉन्फ़िगरेशन को TFTP सर्वर पर कॉपी किया जाता है। इसलिए प्रत्येक ओआईडी के लिए जिसके लिए मुझे मूल्य निर्धारित करने की आवश्यकता है, मेरे पास नीचे जैसा setCmd है:

g = setCmd(SnmpEngine(),
                   CommunityData(snmp_community),
                   UdpTransportTarget((host_ip, 161)),
                   ContextData(),
                   ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopySourceFileType', random_number),
                              users_numeric_entry))

        next(g)

क्या एक ही सेटसीएमडी कमांड में सभी ओआईडी सेट करने में मेरी समस्या वास्तव में एक देरी मुद्दा है? यदि हां, तो क्या मैं कमांड में विलंब सम्मिलित कर सकता हूं?

अपना समय देने के लिए धन्यवाद!

स्विच से डीबग के साथ अपडेट करना

एकल भेजते समय डिबग setCmd:

00:19:16: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:19:16: SNMP: Get request, reqid 2179409, errstat 0, erridx 0
 system.5.0 = NULL TYPE/VALUE
00:19:16: SNMP: Response, reqid 2179409, errstat 0, erridx 0
 system.5.0 = Switch
00:19:16: SNMP: Packet sent via UDP to 10.10.10.10
00:19:17: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:19:17: SNMP: Set request, reqid 2179410, errstat 0, erridx 0
 ccCopyEntry.2.21 = 1
 ccCopyEntry.3.21 = 4
 ccCopyEntry.4.21
Switch# = 1
 ccCopyEntry.5.21 = 10.10.10.10
 ccCopyEntry.6.21 = Switch-running.txt
 ccCopyEntry.14.21 = 1
00:19:17: SNMP: Response, reqid 2179410, errstat 12, erridx 6
 ccCopyEntry.2.21 = 1
 ccCopyEntry.3.21 = 4
 ccCopyEntry.4.21 = 1
 ccCopyEntry.5.21 = 10.10.10.10
 ccCopyEntry.6.21 = Switch-running.txt
 ccCopyEntry.14.21 = 1
00:19:17: SNMP: Packet sent via UDP to 10.10.10.10

जब मैं अलग setCmd कमांड भेजता हूं:

00:15:33: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:33: SNMP: Get request, reqid -1563913845, errstat 0, erridx 0
 system.5.0 = NULL TYPE/VALUE
00:15:33: SNMP: Response, reqid -1563913845, errstat 0, erridx 0
 system.5.0 = Switch
00:15:33: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913844, errstat 0, erridx 0
 ccCopyEntry.2.102 = 1
00:15:34: SNMP: Response, req
Switch#id -1563913844, errstat 0, erridx 0
 ccCopyEntry.2.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913843, errstat 0, erridx 0
 ccCopyEntry.3.102 = 3
00:15:34: SNMP: Response, reqid -1563913843, errstat 0, erridx 0
 ccCopyEntry.3.102 = 3
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid
Switch# -1563913842, errstat 0, erridx 0
 ccCopyEntry.4.102 = 1
00:15:34: SNMP: Response, reqid -1563913842, errstat 0, erridx 0
 ccCopyEntry.4.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913841, errstat 0, erridx 0
 ccCopyEntry.5.102 = 10.0.1.81
00:15:34: SNMP: Response, reqid -1563913841, errstat 0, erridx 0
 ccCopyEntry.5.102 = 10.0.1.81
00:15:34: SNMP: Packet sent via UDP to 10.0.
Switch#1.20
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913840, errstat 0, erridx 0
 ccCopyEntry.6.102 = Switch--start.txt
00:15:34: SNMP: Response, reqid -1563913840, errstat 0, erridx 0
 ccCopyEntry.6.102 = Switch--start.txt
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913839, errstat 0, erridx 0
 ccCopyEntry.14.102 =
Switch#1
00:15:34: SNMP: Response, reqid -1563913839, errstat 0, erridx 0
 ccCopyEntry.14.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Get request, reqid -1563913838, errstat 0, erridx 0
 ccCopyEntry.10.102 = NULL TYPE/VALUE
00:15:34: SNMP: Response, reqid -1563913838, errstat 0, erridx 0
 ccCopyEntry.10.102 = 2
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
Switch#
00:15:37: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:37: SNMP: Set request, reqid -1563913837, errstat 0, erridx 0
 ccCopyEntry.14.102 = 6
00:15:37: SNMP: Response, reqid -1563913837, errstat 0, erridx 0
 ccCopyEntry.14.102 = 6
00:15:37: SNMP: Packet sent via UDP to 10.10.10.10
2
adamz88 16 जिंदा 2019, 03:19

2 जवाब

सबसे बढ़िया उत्तर

वह प्रविष्टि RowStatus शब्दार्थ का अनुसरण करती है जैसा कि https://tools.ietf.org/html/rfc2579

मुझे ऐसा लगता है कि आपको सक्रिय करने के बजाय ccCopyEntryRowStatus को createAndGo पर सेट करने की आवश्यकता है।

1
Gambit Support 17 जिंदा 2019, 18:58

मुझे नहीं लगता कि आप सिस्को स्विच के अंदर एसएनएमपी एजेंट को एसएनएमपी चर को व्यक्तिगत रूप से देरी के साथ संसाधित करने के लिए बना सकते हैं। यह भी अत्यधिक संदेहास्पद लगता है कि आपसे (एक उपयोगकर्ता के रूप में) समय का ध्यान रखने की अपेक्षा की जाती है...

इसलिए मैं शायद यह समझने की कोशिश करूंगा कि स्विच आपके प्रबंधन कमांड को क्यों पसंद नहीं करता है, इसे प्रबंधित करने का सही तरीका क्या है ... प्रेरणा का एक संभावित स्रोत एमआईबी में विवरण है जहां आप जिन चर से निपट रहे हैं उन्हें परिभाषित किया गया है।

1
Ilya Etingof 16 जिंदा 2019, 09:29