環境建置:
windows:安裝新版python,安裝時,選項全選。會把pip都裝好。
在 Windows 11 上使用 Netmiko,您需要確保您的系統滿足以下要求:
-
Python 安裝:在 Windows 11 上安裝 Python。您可以從 Python 官方網站
-
Netmiko 安裝:使用 Python 的包管理工具(如 pip)安裝 Netmiko。在命令提示字元或 PowerShell 中運行以下命令:
pip install netmiko
- 相依庫安裝:Netmiko 依賴於 Paramiko、pyserial 和 textfsm 這些庫,請確保這些相依庫也已經安裝。
安裝 Paramiko:`pip install paramiko`
安裝 pyserial:`pip install pyserial`
安裝 textfsm:`pip install textfsm`
如何將程式建立與執行
您可以將程式碼貼到一個檔案中,並保存為以 .py 為副檔名的 Python 檔案,例如 password_change.py
要執行這個 Python 檔案,您可以按照以下步驟進行:
-
打開命令提示字元或 PowerShell。
-
導航到存放程式檔案的目錄。使用
cd命令進行目錄切換,例如:cd C:\path\to\your\directory -
執行 Python 腳本。在命令提示字元或 PowerShell 中,使用
python命令加上檔案名稱來執行腳本,例如:python password_change.py -
程式將會執行並輸出相關訊息或結果。
練習-show system
使用 Netmiko 提供的功能來連接到網路交換器、更換密碼等操作。記得在腳本中引入必要的模組和庫,例如:
python
from netmiko import ConnectHandler
自己測試後的調整如下:
from netmiko import ConnectHandler
# 定義連接設備的參數
device = {
'device_type': 'alcatel_aos',
#alcatel_aos或alcatel_sros,這是alcatel的,fortigate的是fortinet
'ip': '192.168.112.12',
'username': 'admin',
'password': 'password',
}
# 連接到設備
net_connect = ConnectHandler(**device)
# 進行密碼更換
#commands = [
# 'show vlan',
# 'show system',
#]
#output = net_connect.send_config_set(commands)
command = 'show system'
output = net_connect.send_command(command)
# 確認密碼更換結果
print(output)
# 斷開與設備的連接
net_connect.disconnect()
其中
查詢的指令和設定的指定是不同的,要注意:
在 `output = net_connect.send_config_set(commands)`
使用的是 `send_config_set` 函數,
而非 `send_command` 函數。
這可能導致輸出不符合預期,因為 `send_config_set` 函數主要用於發送配置命令,而不是查詢命令。
查詢:send_command,並且只能用字串
配置命令:send_config_set,可連接。
user admin password Admin@2023
write memory
copy working certified
exit
最後的檔案,主要幾個流程
-
匯入netmiko功能
-
定義變數,帳號密碼,交換器資訊
-
迴圈 去每台
連線
執行命令
輸出執行結果
關閉連線
迴圈
from netmiko import ConnectHandler
#import paramiko
# 定義連接設備的參數
# device = {
# 'device_type': 'alcatel_aos',
# 'ip': '192.168.112.6',
# 'username': 'admin',
# 'password': 'password',
# }
# 定義舊帳號和密碼
old_username = 'admin'
old_password = 'password'
switches = [
# {'device_type': 'alcatel_aos', 'ip': '192.168.112.126', 'username': old_username, 'password': old_password},
{'device_type': 'alcatel_aos', 'ip': '192.168.112.3', 'username': old_username, 'password': old_password},
# 添加更多交換器...`
]
# 迴圈處理每台交換器
for switch in switches:
# 連接到交換器
net_connect = ConnectHandler(**switch)
# 執行命令更改密碼
commands = [
'user admin password Admin@2023',
'write memory',
'copy working certified',
]
output = net_connect.send_config_set(commands)
# 顯示命令執行結果
print(f"交換器 {switch['ip']} 命令執行結果:")
print(output)
# 關閉連線
net_connect.disconnect()
# # 連接到設備
# net_connect = ConnectHandler(**device)
# # 進行密碼更換
# commands = [
# 'user admin password Admin@2023',
# 'write memory',
# 'copy working certified',
# ]
# output = net_connect.send_config_set(commands)
# #ommand = 'show system'
# #utput = net_connect.send_command(command)
# # 確認密碼更換結果
# print(output)
# # 斷開與設備的連接
# net_connect.disconnect()
沒有留言:
張貼留言