日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python备份cisco交换机_Python备份Cisco交换机配置 | CN-SEC 中文网

發(fā)布時(shí)間:2025/4/5 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python备份cisco交换机_Python备份Cisco交换机配置 | CN-SEC 中文网 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近幫同事寫一段關(guān)于導(dǎo)出cisco交換機(jī)的腳本,發(fā)現(xiàn)網(wǎng)上的資料不是太多,僅有的幾個(gè)也有不少錯(cuò)誤,這里分享一個(gè)python操作cisco交換機(jī)的庫。

經(jīng)過對網(wǎng)上的資料查找,發(fā)現(xiàn)如下幾個(gè)庫,吐槽一下百度搜索引擎,搜索結(jié)果太一般了,求谷歌回歸。

1、ciscolib 這個(gè)庫使用方便,比較簡潔,但是好像官方?jīng)]有收錄,需要自行安裝。

安裝方法:

下載,解壓,然后使用python setup.py install安裝。

使用方法(官方文檔):

import ciscolib

switch = ciscolib.Device("hostname or ip", "login password", "optional login username")

switch.connect() # Defaults to port 23

# There are some helper commands for common tasks

print(switch.get_model())

print(switch.get_ios_version())

print(switch.get_neighbors())

switch.enable("enable_password")

# Or you can throw plain commands at the switch

print(switch.cmd("show run"))

switch.cmd("reload\n")

這里有一個(gè)坑,代碼里面最后一行,會(huì)使交換機(jī)重啟,請使用前注釋掉。

缺點(diǎn),只支持telnet,不支持ssh連接

2、使用pexpect,paramiko庫,交互方面存在些許不足,不是太方便。

pexpect.spawn方法在windows下并不支持,所以只能在Linux下面執(zhí)行。

演示代碼如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Date: 2017/4/5

# Created by 獨(dú)自等待

# 博客 http://www.waitalone.cn/

import pexpect

def ssh_cmd(user, ip, cmd, passwd, enpass):

ssh = pexpect.spawn('ssh %[email?protected]%s %s' % (user, ip, cmd))

try:

i = ssh.expect(['Password:', 'continue connecting (yes/no)?'], timeout=5)

if i == 0:

ssh.sendline(passwd)

elif i == 1:

ssh.sendline('yes')

ssh.expect('Password: ')

ssh.sendline(passwd)

except pexpect.EOF:

print "EOF"

except pexpect.TIMEOUT:

print "TIMEOUT"

else:

print ssh.read()

ssh.close()

存在一個(gè)問題,某些命令需要進(jìn)行enable模式,這里好像也可以用,但是我沒有研究好。

paramiko庫比較強(qiáng)大,常用來ssh交互登錄,當(dāng)然也是可以登錄cisco交換機(jī)的,演示代碼:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Date: 2017/4/5

# Created by 獨(dú)自等待

# 博客 http://www.waitalone.cn/

import paramiko

import time

hostname = 'xx.xx.xx.xx'

port = 22

username = 'xx'

password = '[email?protected]'

client = paramiko.SSHClient() # 綁定實(shí)例

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(hostname, port, username, password, timeout=5)

remote_conn = client.invoke_shell()

remote_conn.send('enable\n')

time.sleep(1)

remote_conn.send('[email?protected]\n')

time.sleep(1)

remote_conn.send('show run\n')

time.sleep(1)

output = remote_conn.recv(65535)

print output

由于show run得到的結(jié)果比較長,這里只能獲取一部分,應(yīng)該也是可以全部獲取的。

3、使用netmiko庫操作交換機(jī),這里強(qiáng)烈推薦,支持N多設(shè)備。

安裝方法: pip install netmiko

演示代碼:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Date: 2017/4/5

# Created by 獨(dú)自等待

# 博客 http://www.waitalone.cn/

# https://pynet.twb-tech.com/blog/automation/netmiko.html

from netmiko import ConnectHandler

import time

import os

def Cisco(ip):

"思科交換機(jī)配置導(dǎo)出函數(shù)"

cisco_881 = {

'device_type': 'cisco_ios',

'ip': ip,

'username': 'xx',

'password': '[email?protected]',

'port': 22, # optional, defaults to 22

'secret': '[email?protected]', # optional, defaults to ''

'verbose': False, # optional, defaults to False

}

print u'正在連接交換機(jī):%s\n' % (ip)

net_connect = ConnectHandler(**cisco_881)

net_connect.enable()

commands = [

'show arp',

'show mac address-table',

]

timestr = time.strftime('%Y-%m-%d', time.localtime(time.time()))

for cmd in commands:

filename = u'%s_%s_%s.txt' % (ip, cmd.replace(' ', '_'), timestr)

save = open(filename, 'w')

print u'正在執(zhí)行命令:' + cmd

result = net_connect.send_command(cmd)

save.write(result)

print u'命令執(zhí)行完畢,結(jié)果保存于當(dāng)前目錄%s中!\n' % filename

net_connect.disconnect()

if __name__ == '__main__':

ips = [

'xx.xx.xx.xx',

'xx.xx.xx.xx',

]

for ip in ips:

Cisco(ip)

# 上傳文件至目標(biāo)服務(wù)器

rsync = 'rsync -avz --password-file=rsync.passwd *.txt [email?protected]::upload'

# 列出目標(biāo)服務(wù)器文件列表

# 'rsync --list-only -v [email?protected]::upload'

if os.system(rsync) == 0:

print u'文件上傳成功!'

else:

print u'文件上傳失敗!'

優(yōu)點(diǎn):支持telnet,ssh連接。

from www.waitalone.cn.thanks for it.

總結(jié)

以上是生活随笔為你收集整理的python备份cisco交换机_Python备份Cisco交换机配置 | CN-SEC 中文网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。