2023年5月26日 星期五

alcatel lucent switch利用python netmiko 批次變更密碼

Welcome file

環境建置:

windows:安裝新版python,安裝時,選項全選。會把pip都裝好。

在 Windows 11 上使用 Netmiko,您需要確保您的系統滿足以下要求:

  1. Python 安裝:在 Windows 11 上安裝 Python。您可以從 Python 官方網站

  2. Netmiko 安裝:使用 Python 的包管理工具(如 pip)安裝 Netmiko。在命令提示字元或 PowerShell 中運行以下命令:


pip install netmiko

  1. 相依庫安裝:Netmiko 依賴於 Paramiko、pyserial 和 textfsm 這些庫,請確保這些相依庫也已經安裝。

安裝 Paramiko:`pip install paramiko`

安裝 pyserial:`pip install pyserial`

安裝 textfsm:`pip install textfsm`

如何將程式建立與執行

您可以將程式碼貼到一個檔案中,並保存為以 .py 為副檔名的 Python 檔案,例如 password_change.py

要執行這個 Python 檔案,您可以按照以下步驟進行:

  1. 打開命令提示字元或 PowerShell。

  2. 導航到存放程式檔案的目錄。使用 cd 命令進行目錄切換,例如:cd C:\path\to\your\directory

  3. 執行 Python 腳本。在命令提示字元或 PowerShell 中,使用 python 命令加上檔案名稱來執行腳本,例如:python password_change.py

  4. 程式將會執行並輸出相關訊息或結果。

練習-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

最後的檔案,主要幾個流程

  1. 匯入netmiko功能

  2. 定義變數,帳號密碼,交換器資訊

  3. 迴圈 去每台

連線

執行命令

輸出執行結果

關閉連線

迴圈


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()

  

沒有留言:

張貼留言

讀書心得:數值化之鬼

 問題:在工作上如何做到將工作量化,侑翰說不只如此,推薦了這本書。 動機:在 cne 運作中的回顧,討論到工作量還有工作時間,討論到了如何將工作數值化呈現,讓主管們知道cne需要專門專業,要如何產生數值化出來被看見。 讀書心得與結論如下: 心得: 作者給的五大步:增加行動...