《思科 - GNS3 - 异常处理》

异常处理的应用

实验目的:

1.可自主修改交换机配置,制造出常态错误;

2.创建 try…except…异常处理的脚本文件 批量登录交换机 且 执行cmd.txt文件的命令;

3.出现常态错误的情况下,使得其交换机依然不受干扰,完成剩余的配置。

实验准备:

1.修改1号交换机的用户密码(conf t):username python password 456;

2.关闭2号交换机的某个端口(例 g0/0)conf t:shutdown;

3.确保 python 的模块 例( paramiko ) 能正常运行。

开始:

1.在VM虚拟机上创建一个 ip.txt 的文件存放交换机的IP(ip.txt)

《思科 - GNS3 - 异常处理》_第1张图片

2.在VM虚拟机上创建一个 cmd.txt 的文件,写入需要在交换机上执行的命令(例:show clock)

3.在VM虚拟机上创建一个 lab3.py 文件,其写入代码如下:

import paramiko

import time

import getpass

import sys

import socket

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,allow_agent=False,look_for_keys=False)

print("You have 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(2)

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 socket.error:

print(ip + " is not reachable.")

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 switches are not reachable: ')

for i in switch_not_reachable:

print(i)

《思科 - GNS3 - 异常处理》_第2张图片

验证:

VM虚拟机:python3.8 lab3.py ip.txt cmd.txt

《思科 - GNS3 - 异常处理》_第3张图片

至此(完)

你可能感兴趣的:(思科-GNS3,Linux,python,linux)