2011-08-21 12 views
13

मैंने इस पोस्ट को बड़े पैमाने पर पढ़ा है और एक्सस्क्रिप्ट, पैरामीको, फैब्रिक और पीएक्सएसश का शोध किया है और मैं अभी भी Persistent ssh session to Cisco router खो गया हूं। मैं अजगर पटकथा के लिए नया हूँ।पायथन: एसएसएच सिस्को डिवाइस में और रन शो कमांड

मैं पाइथन में एक स्क्रिप्ट लिखने का प्रयास कर रहा हूं जो एसएसएच को सिस्को डिवाइस में "शो संस्करण" चलाएगा, परिणाम को नोटपैड में प्रदर्शित करेगा, फिर स्क्रिप्ट को समाप्त करेगा।

मैं इसे शो कमांड के साथ काम कर सकता हूं जिसके लिए उपयोगकर्ता को डिवाइस से बातचीत करने की आवश्यकता नहीं होती है। उदाहरण के लिए:

from Exscript.util.interact import read_login 
from Exscript.protocols import SSH2 

account = read_login()    
conn = SSH2()      
conn.connect('192.168.1.11')  
conn.login(account)     

conn.execute('show ip route') 
print conn.response 

conn.send('exit\r')    
conn.close()       

उपरोक्त स्क्रिप्ट "शो आईपी रूट" के परिणाम प्रदर्शित करेगी।

यदि मैं conn.execute ('शो संस्करण') को स्क्रिप्ट के समय का प्रयास करने की कोशिश करता हूं क्योंकि सिस्को डिवाइस उपयोगकर्ता को जारी रखने के लिए स्पेस बार दबाए रखने की उम्मीद कर रहा है, तो अगली पंक्ति या किसी भी कुंजी को वापस करने के लिए वापस दबाएं कमांड लाइन।

मैं शो संस्करण कमांड कैसे निष्पादित कर सकता हूं, शो संस्करण कमांड के पूरे आउटपुट को प्रदर्शित करने के लिए दो बार स्पेस बार दबाएं, फिर इसे पायथन में प्रिंट करें?

धन्यवाद !!!!

उत्तर

17

चलाने से पहले terminal length 0 निष्पादित करने का प्रयास करें।

from Exscript.util.interact import read_login 
from Exscript.protocols import SSH2 

account = read_login()    
conn = SSH2()      
conn.connect('192.168.1.11')  
conn.login(account) 

conn.execute('terminal length 0')   

conn.execute('show version') 
print conn.response 

conn.send('exit\r')    
conn.close() 

सिस्को टर्मिनल डॉक्स से: उदाहरण के लिए: http://www.cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html#wp1019281

+0

धन्यवाद! मैं इसे पूरा गलत तरीका देख रहा था। मुझे उस बॉक्स के बाहर देखने में मदद करने के लिए धन्यवाद, जिसमें मैं था :) –

7

पहले

terminal length 0 

पेजिंग निष्क्रिय करने के लिए निष्पादित करें।

+0

धन्यवाद !!!! ! –

1

मैं सिर्फ एक ही बात को कहा और नीचे दिए गए कोड एक सूची से चलाने के लिए और जानकारी आपके लिए पूछ रहे हैं प्राप्त करेंगे।

from __future__ import print_function 
from netmiko import ConnectHandler 
import sys 
import time 
import select 
import paramiko 
import re 
fd = open(r'C:\NewdayTest.txt','w') # Where you want the file to save to. 
old_stdout = sys.stdout 
sys.stdout = fd 
platform = 'cisco_ios' 
username = 'username' # edit to reflect 
password = 'password' # edit to reflect 

ip_add_file = open(r'C:\IPAddressList.txt','r') # a simple list of IP addresses you want to connect to each one on a new line 

for host in ip_add_file: 
    host = host.strip() 
    device = ConnectHandler(device_type=platform, ip=host, username=username, password=password) 
    output = device.send_command('terminal length 0') 
    output = device.send_command('enable') #Editable to be what ever is needed 
    print('##############################################################\n') 
    print('...................CISCO COMMAND SHOW RUN OUTPUT......................\n') 
    output = device.send_command('sh run') 
    print(output) 
    print('##############################################################\n') 
    print('...................CISCO COMMAND SHOW IP INT BR OUTPUT......................\n') 
    output = device.send_command('sh ip int br') 
    print(output) 
    print('##############################################################\n') 

fd.close() 
+0

ब्रो, आप पार्टी के लिए देर से पागल हो। –

+0

हाँ नहीं इनकार कर सकते हैं लेकिन बेहतर देर से तो कभी सही नहीं है? –

संबंधित मुद्दे