telnetlib库

telnet库的使用

import tkinter as tk
from tkinter import messagebox
import telnetlib
from selenium import webdriver


root = tk.Tk()  # 创建窗口
root.title('产测小工具')
root.geometry("300x100+630+80")  # 长x宽+x*y


#menubar = Menu(root)
#oot.config(menu=menubar)

#A = Menu(menubar,tearoff=0)
#menubar.add_cascade(label='11',menu=A)


btn1 = tk.Button(root)  # 创建按钮,并且将按钮放到窗口里面
btn1["text"] = "语音拨号"  # 给按钮一个名称
btn1.pack()  # 按钮布局

btn2 = tk.Button(root)
btn2["text"] = "打开页面"
btn2.pack()

btn3 = tk.Button(root) #执行gon的下发指令
btn3["text"] = "设置SN"
btn3.pack()


def SetSn(e):
    '''创建弹窗'''
    try:
        tn=telnetlib.Telnet('192.168.1.1',port=23,timeout=10)
    except Exception as e:
        print("--------connect is error ------")
    #print("1111111111")
    name = "tc login:"
    name = name.encode()
    telecomadmin = "telecomadmin"
    telecomadmin = telecomadmin.encode()

    password = "nE7jA%5m"
    password = password.encode()

    Set = "tcapi set gpon_onu SerialNumber PTIN65AB57FB"
    Set=Set.encode()

    Commit = "tcapi commit gpon"
    Commit = Commit.encode()

    Save = "tcapi save"
    Save = Save.encode()

    try:
        respon = tn.read_until(name)
    except Exception as e:
        print("------respon is error -------")
    print("the is :",respon)
    
    try:
        tn.write(telecomadmin+b'\n')
    except Exception as e:
        print("---------write error-----")
        
    #tn.read_until('Password:')
    tn.write(password+b'\n')
    print("111111111")
    tn.write(Set+b'\n')
    
    tn.write(Commit+b'\n')
    tn.write(Save+b'\n')


    messagebox.showinfo("窗口名称", "设置SN完成")
    
def test(e):
    '''创建弹窗'''
    try:
        tn=telnetlib.Telnet('192.168.1.1',port=23,timeout=10)
    except Exception as e:
        print("--------connect is error ------")
    #print("1111111111")
    name = "tc login:"
    name = name.encode()
    telecomadmin = "telecomadmin"
    telecomadmin = telecomadmin.encode()

    password = "nE7jA%5m"
    password = password.encode()

    evcom = "evcom"
    evcom=evcom.encode()

    di = "di"
    di = di.encode()

    ir = "ir if=0"
    ir=ir.encode()
    try:
        respon = tn.read_until(name)
    except Exception as e:
        print("------respon is error -------")
    print("the is :",respon)
    
    try:
        tn.write(telecomadmin+b'\n')
    except Exception as e:
        print("---------write error-----")
        
    #tn.read_until('Password:')
    tn.write(password+b'\n')
    print("111111111")
    tn.write(evcom+b'\n')
    tn.write(di+b'\n')
    tn.write(ir+b'\n')

    messagebox.showinfo("窗口名称", "点击成功")

def web(e):
    browser = webdriver.Chrome()
    data = {"username":"telecomadmin","password":"nE7jA%5m","Language_Flag":"0","selectLanguage":"Chinese"}
    browser.get("http://192.168.1.1")
    
    browser.implicitly_wait(10)
    browser.find_element_by_id('username').clear()    #清除输入框数据
    browser.find_element_by_id('username').send_keys('telecomadmin')    #输入账号
    browser.find_element_by_id('password').clear()    #
    browser.find_element_by_id('password').send_keys('nE7jA%5m')    #输入密码
    browser.find_element_by_id('loginbutton').click()


    messagebox.showinfo("窗口名称", "点击成功")


btn1.bind("<Button-1>", test)  # 将按钮和方法进行绑定,也就是创建了一个事件
btn2.bind("<Button-1>",web)
btn3.bind("<Button-1>",SetSn)



root.mainloop()  # 让窗口一直显示,循环

1.2.1 建立连接

建立连接有两种方式:1、实例化函数的时候,将可选参数 host 和 port 传递给构造函数,在这种情况下,到服务器的连接将在构造函数返回前建立。2、使用telnetlib.Telnet类的open函数建立连接。

如以下两种方式是等同的,参数timeout表示阻塞的时间(单位为秒),默认为一直阻塞:


import telnetlib
 
HOST = "10.102.1.12"
#方式1
tn = telnetlib.Telnet(HOST, port=21, timeout=10)
 
#方式2
tn = telnetlib.Telnet()
tn.open(HOST, port=21)

1.2.2 发送命令

发送命令使用的是Telnet类的write方法,注意参数buffer是字节字符串byte string,网络数据传输都是使用的byte string,也就是字节流,在发送的字符串前面加一个b,就可以将字符串转换为字节流。

Telnet.write(buffer)

例如,发送一个“exit”命令给服务器,也就是退出telnet连接。

tn.write(b"exit\n")

1.2.3 读取返回数据

Telnet类提供的读取返回结果的函数比较多,这里列举3个:
Telnet.read_until(expected, timeout=None) 读取直到遇到给定字节串 expected 或 timeout 秒已经过去。默认为阻塞性的读。

Telnet.read_all() 读取数据,直到遇到 EOF;连接关闭前都会保持阻塞。

Telnet.read_very_eager() 在不阻塞 I/O 的情况下读取所有的内容(eager)。

1.2.4 关闭连接

关闭telnet连接直接使用Telnet.close()函数,或者发送"exit"命令,以下两种用法是一样的。

tn = telnetlib.Telnet()
#方式1
tn.close()
#方式2
tn.write(b"exit\n")

猜你喜欢

转载自blog.csdn.net/lixiaofeng0/article/details/142559687