拓展培训公司 web开发 北斗系统 作用域 HTTP请求 multithreading meteor phpmyadmin 后台管理系统模板 河南网络推广 jquery的each循环 css最后一个子元素 oracle无效的列索引 微信pc版无法获取二维码 kafka学习 docker创建容器 python开发教程 python安装配置 python关键字 python编程题 python正则表达式例子 python怎么调用函数 python正则匹配数字 java文件 javapattern java八大基本数据类型 怎么安装linux java项目下载 wps2011 千元以下最好的手机 js闭包的理解 beatedit 系统维护工具 tar解压 朋友圈访客记录教程 x64dbg 有线网卡驱动下载 cdr字体加粗 php随机数函数 平面设计软件下载
当前位置: 首页 > 学习教程  > python

学习Python⑹:应用Python开发网络程序

2021/2/7 11:43:21 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

应用Python通过telent去操作网络设备,对网络管理员来说是很方便的。 import telnetlib import time import sys import os.pathclass TelnetClient():def __init__(self,):self.tn telnetlib.Telnet() # 定义一个Telnet连接def Login…

  应用Python通过telent去操作网络设备,对网络管理员来说是很方便的。

import telnetlib
import time
import sys
import os.path

class TelnetClient():
    def __init__(self,):
        self.tn = telnetlib.Telnet()                             # 定义一个Telnet连接

    def Login(self,HostIP,Username,Password):                    # 给定参数进行连接
        try:
            self.tn.open(HostIP,port=23)                         # 连接
            self.tn.read_until(b'login: ',timeout=5)             # 等待login:出现,最多等待5秒
            self.tn.write(Username.encode('ascii') + b'\n')      # 输入用户名称
            self.tn.read_until(b'Password: ',timeout=5)          # 等待Password:出现,最多等待5秒
            self.tn.write(Password.encode('ascii') + b'\n')      # 输入用户口令
            time.sleep(2)                                        # 延时两秒
            Result = self.tn.read_very_eager().decode('ascii')   # 获取返回结果
            if '<'+Equipmentname+'>' in Result:
                return True                                      # 成功登陆
            else:
                self.Disconnect()
                self.StrErr = '连接地址:{}失败,用户名称或者密码错误\r\n'.format(HostIP)
                return False                                     # 登陆失败
        except:
            self.StrErr='连接地址:{}失败!\r\n'.format(HostIP)         # 异常
            self.Disconnect()
            return False

    def ExecuteCommand(self,command):                               # 执行命令
        Year = time.strftime('%Y', time.localtime(time.time()))
        Month = time.strftime('%m', time.localtime(time.time()))
        Day = time.strftime('%d', time.localtime(time.time()))
        Pathname, Filename = os.path.split(os.path.abspath(sys.argv[0]))
        SaveFile = Pathname + "\\" + Equipmentname + Year + Month + Day + ".txt"
        file_object = open(SaveFile, 'ab+')                           # 打开文件准备写
        file_object.write(Equipmentname.encode('ascii')+b"\r\n")      # 将设备名称写入文件
        self.tn.write(command.encode('ascii')+b'\n')                  # 执行命令
        time.sleep(1)
        Result=self.tn.read_very_eager()
        while True:
            file_object.write(Result)                                 # 将返回的结果写入文件
            if not Result.find(StrMore.encode('ascii'))>0:            # 是否包含"-- more --"
                break
            self.tn.write(b" ")                                       # 发送空格键
            time.sleep(1)
            Result=self.tn.read_very_eager()

    def Logout(self):                                              # 正常退出
        self.tn.write(b"exit\n")                                   

    def Disconnect(self):                                          # 异常关闭
        self.tn.close()

if __name__ == '__main__':
    Equipmentname=""
    HostIP = ''
    Username = ''
    Password = ''
    Command = ['dis cu','dis mac-address','dis arp']
    CommandPrompt=""                                           # 命令提示符
    StrMore="-- More --"
    NewTelnetClient = TelnetClient()                           # 实例化
    if NewTelnetClient.Login(HostIP,Username,Password):        # 如果登录结果返加True,则执行命令,然后退出
        for S in Command:
            NewTelnetClient.ExecuteCommand(S)
        NewTelnetClient.Logout()
    else:
        print(NewTelnetClient.StrErr)

  上面的程序比较简单,可以获取网络设备的数据存到txt文件中,文件名称为设备名称加当前的时间。

 


本文链接: http://www.dtmao.cc/news_show_2000286.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?