我試著用Python在Cisco設備上做些事.
這個練習是用Python去SSH登入Cisco設備.
下面程式能做到:
1. SSH(可選port).
2. 登入單台設備
3. 自動輸入SSH的帳密.
4. 在python中手動要輸入進Cisco設備的指令
範例檔我是參考:
https://github.com/ktbyers/netmiko
https://pynet.twb-tech.com/blog/automation/netmiko.html
用Notepad++打下列的程式碼,
另存為PY_SSH_SW_VLANs.py. 我附上中文注釋方便好讀.
# -*- coding: UTF-8 -*-
# http://juilin77.blogspot.com/
# v20181009
# 下面程式能做到:
# 1. SSH(可選port).
# 2. 登入單台設備
# 3. 自動輸入SSH的帳密.
# 4. 在python中手動要輸入進Cisco設備的指令
# 首先導入下面這個模組
from netmiko import ConnectHandler
# 命令cisco設備, 並做登入的參數設定
mgmt_sw01 = {
"device_type": "cisco_ios",
"ip": "192.168.80.191",
"username": "cisco",
"password": "cisco123",
"port" : 22, # optional, defaults to 22
"secret": "secret", # optional, defaults to ""
"verbose": False, # optional, defaults to False
}
net_connect = ConnectHandler(**mgmt_sw01)
# 這邊可以寫上我將要在登入設備後去執行的"Show"指令(show的做法)
# 並輸出其指令效果
output = net_connect.send_command("show cdp neighbors")
print(output)
# 這邊可以寫上我將要在登入設備後去執行"config"指令(config的做法)
# 並輸出其指令效果
config_commands = [ "logging buffered 20000",
"logging buffered 20010",
"no logging console" ]
output = net_connect.send_config_set(config_commands)
print (output)
# 我用loop的方式, 建立多個VLAN, 從VLAN2開始, 建立到VLAN4.
# VALN name 就是 PY_VLAN_開頭, 後面接上VLAN ID.
# 並輸出其指令效果
for n in range(2,5):
print ("Creating VLAN " + str(n))
config_commands = ["vlan " + str(n),
"name PY_VLAN_" + str(n)]
output = net_connect.send_config_set(config_commands)
print (output)
然後我用Web-IOU去建一個測試環境.
以下是預先需要設定的指令:
hostname MGMT_SW01 ! username cisco privilege 15 password cisco123 ! interface vlan 1 ip address 192.168.80.201 255.255.255.0 no shutdown ! ip domain-name peter.net crypto key generate rsa 1024 ! line vty 0 4 login local transport input all !
然後用Windows的cmd, 執行python.
D:\Tech\Python\PY_Cisco>python PY_SSH_SW_VLANs.py Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID R01 Eth 0/1 177 R Linux Uni Eth 0/0 config term Enter configuration commands, one per line. End with CNTL/Z. MGMT_SW01(config)#logging buffered 20000 MGMT_SW01(config)#logging buffered 20010 MGMT_SW01(config)#no logging console MGMT_SW01(config)#end MGMT_SW01# Creating VLAN 2 config term Enter configuration commands, one per line. End with CNTL/Z. MGMT_SW01(config)#vlan 2 MGMT_SW01(config-vlan)#name PY_VLAN_2 MGMT_SW01(config-vlan)#end MGMT_SW01# Creating VLAN 3 config term Enter configuration commands, one per line. End with CNTL/Z. MGMT_SW01(config)#vlan 3 MGMT_SW01(config-vlan)#name PY_VLAN_3 MGMT_SW01(config-vlan)#end MGMT_SW01# Creating VLAN 4 config term Enter configuration commands, one per line. End with CNTL/Z. MGMT_SW01(config)#vlan 4 MGMT_SW01(config-vlan)#name PY_VLAN_4 MGMT_SW01(config-vlan)#end MGMT_SW01# D:\Tech\Python\PY_Cisco>
完成
Check:
參考資料:
1. 05 - Install Paramiko and Netmiko on Windows
http://juilin77.blogspot.com/2018/10/05-install-paramiko-and-netmiko-on.html
2. 12 - Using SSH in Python - v4
https://juilin77.blogspot.com/2019/05/12-using-ssh-in-python-v4.html
3. 08 - Using SSH in Python - v3
https://juilin77.blogspot.com/2018/10/08-using-ssh-in-python-v3.html
4. 07 - Using SSH in Python - v2
https://juilin77.blogspot.com/2018/10/07-using-ssh-in-python-v2.html
最初發表 / 最後更新: 2018.10.09 / 2019.05.16


0 comments:
張貼留言