Python实现网络自动化eNSP

1.使用Paramiko登陆到单台交换机

实验拓扑

云彩桥接到本机环回接口:192.168.1.1/24
三层交换机IP:192.168.1.2/24

实验要求

使用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

配置三层交换机开启 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()

查看运行结果

在交换机上查看

也可以在交换机上debuggiing ip packet可以看到日志

2.使用Paramiko登陆到连续子网交换机

实验拓扑

连续子网三层交换机:管理地址 192.168.1.2/24 to 192.168.1.5/24

实验要求

登陆到各台交换机,并为其配置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()

运行结果

3.Paramiko登陆不连续子网交换机

实验拓扑

将交换机LSW5的管理接口ip更改为192.168.1.6/24,使交换机ip不在同一网段

实验要求

使用Paramiko登陆四台ip不连续的交换机,并给其配置vlan11 to 15

实验步骤

创建一个文本文档,将需要配置的交换机的ip地址写入,这里我在Desktop下创建了一个名为ip.txt文档

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

查看运行结果

4.sys.argv[ ] 实现灵活调用脚本所需文件

实验拓扑

假设1.2和1.3为一组,1.4和1.6为一组

实验要求

同时修改不同型号设备的配置,给SW1/3配置vlan11 to 15,SW4/5配置vlan16 to 20

实验步骤

创建两个名为ip1.txt,command1.txt的文件,存储1组的ip和要进行的配置

同样创建两个名为ip2.txt,command2.txt文件,存储2组的ip和要进行的配置

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里使用)

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的实现的文章就介绍到这了,更多相关Python 网络自动化 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python自动化测试实例解析

    本文实例讲述了python自动化测试的过程,分享给大家供大家参考. 具体代码如下: import unittest ######################################################################## class RomanNumeralConverter(object): """converter the Roman Number""" #-----------------------

  • Python自动化运维和部署项目工具Fabric使用实例

    Fabric 是使用 Python 开发的一个自动化运维和部署项目的一个好工具,可以通过 SSH 的方式与远程服务器进行自动化交互,例如将本地文件传到服务器,在服务器上执行shell 命令. 下面给出一个自动化部署 Django 项目的例子 # -*- coding: utf-8 -*- # 文件名要保存为 fabfile.py from __future__ import unicode_literals from fabric.api import * # 登录用户和主机名: env.use

  • python selenium UI自动化解决验证码的4种方法

    本文介绍了python selenium UI自动化解决验证码的4种方法,分享给大家,具体如下: 测试环境 windows7+ firefox50+ geckodriver # firefox浏览器驱动 python3 selenium3 selenium UI自动化解决验证码的4种方法:去掉验证码.设置万能码.验证码识别技术-tesseract.添加cookie登录,本次主要讲解验证码识别技术-tesseract和添加cookie登录. 1. 去掉验证码 去掉验证码,直接通过用户名和密码登陆网

  • Python + selenium自动化环境搭建的完整步骤

    前言 本文主要介绍了关于Python+selenium自动化环境搭建的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 Python +selenium+googledriver 小白的血泪安装使,不停的总结写心得是理解透彻的毕竟之路 一,python的安装: 首先去Python的官网下载安装包:https://www.python.org/  ,大家也可以通过我们进行下载://www.jb51.net/softs/415916.html 2.下载完成后如下图所示 3.双

  • python自动化实现登录获取图片验证码功能

    主要记录一下:图片验证码 1.获取登录界面的图片 2.获取验证码位置 3.在登录页面截取验证码保存 4.调用百度api识别(目前准确率较高的识别图片api) 本次登录的系统页面,可以看到图片验证码的位置 from selenium import webdriver import time from PIL import Image base_url = '***********' browser = webdriver.Chrome() browser.maximize_window() bro

  • selenium+python实现自动化登录的方法

    Selenium Python 提供了一个简单的API 便于我们使用 Selenium WebDriver编写 功能/验收测试. 通过Selenium Python的API,你可以直观地使用所有的 Selenium WebDriver 功能 .Selenium Python提供了一个很方便的接口来驱动 Selenium WebDriver , 例如Firefox.Chrome.Ie,以及Remote,目前支持的python版本有2.7或3.2以上. selenium 可以自动化测试.抢票.爬虫等

  • Python 自动化表单提交实例代码

    今天以一个表单的自动提交,来进一步学习selenium的用法 练习目标 0)运用selenium启动firefox并载入指定页面(这部分可查看本人文章 http://www.cnblogs.com/liu2008hz/p/6958126.html) 1)页面元素查找(多种查找方式:find_element_*) 2)内容填充(send_keys) 3)iframe与父页面切换(switch_to_frame是切换到iframe,switch_to_default_content是切换到主页面)

  • python自动化测试之setUp与tearDown实例

    本文实例讲述了python自动化测试之setUp与tearDown的用法,分享给大家供大家参考.具体如下: 实例代码如下: class RomanNumeralConverter(object): def __init__(self): self.digit_map = {"M":1000, "D":500, "C":100, "L":50, "X":10, "V":5, "I

  • Python自动化测试工具Splinter简介和使用实例

    Splinter 快速介绍 官方网站:http://splinter.cobrateam.info/ 官方介绍: Splinter is an open source tool for testingweb applications using Python. It lets you automate browser actions, such asvisiting URLs and interacting with their items 特性:1.可以模拟浏览器行为,访问指定的URL,并且可

  • Python实现网络自动化eNSP

    1.使用Paramiko登陆到单台交换机 实验拓扑 云彩桥接到本机环回接口:192.168.1.1/24 三层交换机IP:192.168.1.2/24 实验要求 使用Python Paramiko 模块实现SSH 登录单个交换机(192.168.56.2/24),配置LoopBack0地址:1.1.1.1/32.配置完成后,保存退出. 实验步骤 配置交换机管理地址,并测试与主机虚拟网卡连通性 [Huawei]vlan 10 [Huawei]int vlan 10 [Huawei-Vlanif10

  • python+opencv+selenium自动化登录邮箱并解决滑动验证的问题

    前言 大家做自动化登录时可能都遇到过滑块验证码需要手动验证的问题,这次我们就来解决他 如下:    在我们做自动化登录时,总会遇到各种奇奇怪怪的验证码,滑块验证码就是其中最常见的一种.若我们的程序自动输入账号密码之后,还需要我们人工去滑动验证码那还能称得上是自动化吗? 那么先给大家说一下我的'解题步骤'. 1.使用selenium打开邮箱首页. 2.定位到账号密码框,键入账号密码. 3.获取验证图片,使用opencv处理返回滑块应拖动的距离. 4.创建鼠标事件,模拟拖动滑块完成验证.   需要解

  • python开发的自动化运维工具ansible详解

    目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ansible 执行流程 ansible 命令执行过程 ansible 配置详解 ansible 安装方式 使用 pip(python的包管理模块)安装 使用 yum 安装 ansible 程序结构 ansible配置文件查找顺序 ansible配置文件 ansuble主机清单 ansible 常用命令 ansible 命令集 ansible

  • Python socket网络编程TCP/IP服务器与客户端通信

    Python socket网络编程 初学 python,前段时间买了两本书<python 编程从入门到实践><Python 核心编程第三版>,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太理解的地方,不过想来通过自己不断的摸索,不断地搜寻资料学习,早晚应该会变得通透吧....... 这部分主要使用的模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象

  • python从网络读取图片并直接进行处理的方法

    本文实例讲述了python从网络读取图片并直接进行处理的方法.分享给大家供大家参考.具体实现方法如下: 下面的代码可以实现从网络读取一张图片,不需要保存为本地文件,直接通过Image模块对图片进行处理,这里使用到了cStringIO库,主要是把从网络读取到的图片数据模拟成本地文件. import urllib2 import Image import cStringIO def ImageScale(url,size): file = cStringIO.StringIO(urllib2.url

  • Python简单网络编程示例【客户端与服务端】

    本文实例讲述了Python简单网络编程.分享给大家供大家参考,具体如下: 内容目录 1. 客户端(client.py) 2. 服务端(server.py) 一.客户端(client.py) import socket import sys port = 70 host = sys.argv[1] filename = sys.argv[2] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port))

  • Python实现网络端口转发和重定向的方法

    本文实例讲述了Python实现网络端口转发和重定向的方法.分享给大家供大家参考,具体如下: [任务] 需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting). [解决方案] 两个使用threading和socket模块的类就能完成我们需要的端口转发和重定向. #encoding=utf8 #author: walker摘自<Python Cookbook(2rd)> #date: 2015-06-11 #function: 网络端口的转发和重

  • python实现报表自动化详解

    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件的扩展工具.可以实现指定表单.指定单元格的写入.支持excel03版到excel2013版.使用时请确保已经安装python环境 xlrd Python语言中,读取Excel的扩展工具.可以实现指定表单.指定单元格的读取.使用时请确保已经安装python环境. NOTICE: xlwt对Excel只

  • Python下载网络小说实例代码

    看网络小说一般会攒上一波,然后导入Kindle里面去看,但是攒的多了,机械的Ctrl+C和Ctrl+V实在是OUT,所以就出现了此文. 其实Python我也是小白,用它的目的主要是它强大文本处理能力和网络支持,以及许多好用的库,不需要自己造轮子.而且真心比C方便啊(真是用了才知道) 分析要获取的网页 我要获取的主要是3个东西: 文章的标题.<div id="title">正文 第一章 北灵院</div> 文章正文内容.<div id="conte

随机推荐