中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現網絡自動化eNSP

發布時間:2021-05-27 10:26:17 來源:億速云 閱讀:322 作者:小新 欄目:開發技術

這篇文章主要介紹了Python如何實現網絡自動化eNSP,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.使用Paramiko登陸到單臺交換機

實驗拓撲

云彩橋接到本機環回接口:192.168.1.1/24
三層交換機IP:192.168.1.2/24

Python如何實現網絡自動化eNSP

實驗要求

使用Python Paramiko 模塊實現SSH 登錄單個交換機(192.168.56.2/24),配置LoopBack0地址:1.1.1.1/32。配置完成后,保存退出。

實驗步驟 配置交換機管理地址,并測試與主機虛擬網卡連通性

[Huawei]vlan 10
[Huawei]int vlan 10
[Huawei-Vlanif10]ip add 192.168.1.2 24
[Huawei-GigabitEthernet0/0/1]port link-type access 
[Huawei-GigabitEthernet0/0/1]port default vlan 10

Python如何實現網絡自動化eNSP

Python如何實現網絡自動化eNSP

配置三層交換機開啟 SSH 服務端,配置 SSH 賬號密碼。

[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]authentication-mode aaa
[Huawei-ui-vty0-4]protocol inbound ssh
[Huawei-aaa]local-user python password cipher 123
[Huawei-aaa]local-user python privilege level 3
[Huawei-aaa]local-user python service-type ssh 
[Huawei]stelnet server enable 
[Huawei]ssh authentication-type default password

Python代碼

import paramiko
import time

ip = '192.168.56.2'
username = 'python'
password = '123'

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) //默認情況下,Paramiko會拒絕任何未知的SSH public keys,使用此函數使其接收來自交換機提供的public keys。
ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False)
print('Successfully connect to ' + ip)

commend = ssh_client.invoke_shell()
commend.send('sys\n')
commend.send('interface LoopBack 0\n')
commend.send('ip add 1.1.1.1 255.255.255.255\n')
commend.send('return\n')
commend.send('save\n')
commend.send('y\n')

time.sleep(3) //稍等3秒,然后執行以下操作
output = commend.recv(65535) //截取本次運行script后的所有輸出記錄,將其assign給output變量
print(output.decode("ascii"))

ssh_client.close()

查看運行結果

Python如何實現網絡自動化eNSP

在交換機上查看

Python如何實現網絡自動化eNSP

也可以在交換機上debuggiing ip packet可以看到日志

2.使用Paramiko登陸到連續子網交換機

實驗拓撲

連續子網三層交換機:管理地址 192.168.1.2/24 to 192.168.1.5/24

Python如何實現網絡自動化eNSP

實驗要求

登陸到各臺交換機,并為其配置vlan 11 to 15,保存配置并退出。

實驗步驟

配置管理口IP地址,并配置SSH Server 登陸名以及密碼等

python代碼

import paramiko
import time

#import getpass
#username = input('Username: ')
#password = getpass.getpass('Password: ') //pycharm中該模塊運行沒反應,用戶名和密碼還是直接寫的

username = 'python'
password = '123'

for i in range(2, 6):
    ip = '192.168.1.' + str(i)
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False)
    command = ssh_client.invoke_shell()
    print('Successfully connect to ' + ip)
    command.send('sys\n')
    for j in range(11, 16):
        print('正在創建VLAN: ' + str(j))
        command.send('vlan ' + str(j) + '\n')
        time.sleep(1)
    command.send('return\n')
    command.send('save\n')
    command.send('y\n')
    time.sleep(2)
    output = command.recv(65535).decode('ascii')
    print(output)

ssh_client.close()

運行結果

Python如何實現網絡自動化eNSP

Python如何實現網絡自動化eNSP

3.Paramiko登陸不連續子網交換機

實驗拓撲

將交換機LSW5的管理接口ip更改為192.168.1.6/24,使交換機ip不在同一網段

Python如何實現網絡自動化eNSP

實驗要求

使用Paramiko登陸四臺ip不連續的交換機,并給其配置vlan11 to 15

實驗步驟

創建一個文本文檔,將需要配置的交換機的ip地址寫入,這里我在Desktop下創建了一個名為ip.txt文檔

Python如何實現網絡自動化eNSP

使用open函數,打開文件,進行操作,實現不連續子網調用

import paramiko
import time

username = 'python'
password = '123'

f = open('C:/Users/DELL/Desktop/ip.txt', 'r')
for line in f.readlines():
    ip = line.strip()
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip, username=username, password=password)
    print('Successfully connect to ', ip)
    command = ssh_client.invoke_shell()
    command.send('sys\n')
    command.send('vlan batch 11 to 15\n')
    time.sleep(2)
    command.send('return\n')
    command.send('save\n')
    command.send('y\n')
    time.sleep(2)
    output = command.recv(65535).decode('ascii')
    print(output)

f.close()
ssh_client.close()

查看運行結果

Python如何實現網絡自動化eNSP

Python如何實現網絡自動化eNSP

Python如何實現網絡自動化eNSP

4.sys.argv[ ] 實現靈活調用腳本所需文件

實驗拓撲

假設1.2和1.3為一組,1.4和1.6為一組

Python如何實現網絡自動化eNSP

實驗要求

同時修改不同型號設備的配置,給SW1/3配置vlan11 to 15,SW4/5配置vlan16 to 20

實驗步驟

創建兩個名為ip1.txt,command1.txt的文件,存儲1組的ip和要進行的配置

Python如何實現網絡自動化eNSP

同樣創建兩個名為ip2.txt,command2.txt文件,存儲2組的ip和要進行的配置

Python如何實現網絡自動化eNSP

Python如何實現網絡自動化eNSP

python代碼

import paramiko
import time
import sys

username = 'python'
password = '123'

ip_file = sys.argv[1]
cmd_file = sys.argv[2]

iplist = open(ip_file)
for line in iplist.readlines():
    ip = line.strip()
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip, username=username, password=password)
    print('Successfully connect to ', ip)
    command = ssh_client.invoke_shell()
    cmdlist = open(cmd_file, 'r')
    cmdlist.seek(0)
    for line in cmdlist.readlines():
        command.send(line + '\n')
        time.sleep(5)
    cmdlist.close()
    output = command.recv(65535)
    print(output)

iplist.close()
ssh_client.close()

查看運行結果(pycharm不可以使用argv,在cmd里使用)

Python如何實現網絡自動化eNSP

5.SSH連接失敗處理

import paramiko
import time
import sys
import socket
import getpass

username = input('Username: ')
password = getpass.getpass('Password: ')
ip_file = sys.argv[1]
cmd_file = sys.argv[2]

switch_with_authentication_issue = []
switch_not_reachable = []

iplist = open(ip_file, 'r')
for line in iplist.readlines():
    try:
        ip = line.strip()
        ssh_client = paramiko.SSHClient()
        ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh_client.connect(hostname=ip, username=username, password=password,look_for_keys=False)
        print('Successfully connect to ' + ip)
        command = ssh_client.invoke_shell()
        cmdlist = open(cmd_file, 'r')
        cmdlist.seek(0)
        for cmd in cmdlist.readlines():
            command.send(cmd + '\n')
        time.sleep(1)
        cmdlist.close()
        output = command.recv(65535)
        print(output.decode("ascii"))
    except paramiko.ssh_exception.AuthenticationException:
        print('User authentication failed for ' + ip + '.')
        switch_with_authentication_issue.append(ip)
    except TimeoutError:
        switch_not_reachable.append(ip)

iplist.close()
ssh_client.close()

print('\nUser authentication failed for below switches: ')
for i in switch_with_authentication_issue:
    print(i)

print('\nBelow switchs are not reachable: ')
for i in  switch_not_reachable:
    print(i)

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python如何實現網絡自動化eNSP”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陆丰市| 宿州市| 惠东县| 临清市| 无极县| 康保县| 于田县| 长武县| 常山县| 沂南县| 永和县| 武山县| 泉州市| 莫力| 大田县| 九龙县| 阜阳市| 花莲县| 南汇区| 大邑县| 革吉县| 徐水县| 桐柏县| 惠来县| 边坝县| 永善县| 荣昌县| 吴堡县| 彰化市| 灵石县| 永州市| 论坛| 拜城县| 上思县| 巴青县| 洞口县| 扬州市| 麟游县| 汝阳县| 井陉县| 交口县|