欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

發(fā)個python2.6+wxPython+wxGlade實現(xiàn)的簡單teln

系統(tǒng) 1607 0


??? 這些日子在公司測試機(jī)頂盒游戲,每次啟動游戲的時候都要在windows黑色的dos窗口輸命令,非常不方便,于是借著自己剛學(xué)的一點點python+wxPython的知識,寫了這個telnet客戶端,功能比較簡單,根據(jù)需要可以再作修改。界面用wxGlade生成,本來我不喜歡wxGlade的,覺得不是很好用,但用著用著發(fā)現(xiàn)其實還不錯,生成的代碼也很容易和自己的代碼結(jié)合。
??? 輸入指令的輸入框有默認(rèn)的指令提示,為了方便寫了個COMMAND指令列表,這是公司里用的,可以在源代碼中COMMADN列表中修改自己需要的指令,或者去掉COMMAND,直接往輸入框輸指令。
    
#!/usr/bin/env python
# -*- coding: GB2312 -*-
# @author 小星星 zyl198692@sina.com
# generated by wxGlade 0.6.3 on Mon Aug 17 13:50:13 2009

import wx
import telnetlib
import sys

# begin wxGlade: extracode
# end wxGlade

# 預(yù)先定義的指令列表
COMMAND=['busybox mount -t nfs -o nolock,ro,mountvers=2 192.168.1.128:/iptv /mnt','cd mnt/czy/llz/soundddz','sh run.sh']
class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        # 初始化組件,由wxGlade產(chǎn)生
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
        self.sizer_3_staticbox = wx.StaticBox(self.panel_1, -1, u"遠(yuǎn)程登錄")
        self.label_2 = wx.StaticText(self.panel_1, -1, u"地址:")
        self.ip_ctrl = wx.TextCtrl(self.panel_1, -1, "192.168.18.11")
        self.label_3 = wx.StaticText(self.panel_1, -1, u"端口:")
        self.port_ctrl = wx.TextCtrl(self.panel_1, -1, "23")
        self.label_4 = wx.StaticText(self.panel_1, -1, u"用戶:")
        self.user_ctrl = wx.TextCtrl(self.panel_1, -1, "root")
        self.label_5 = wx.StaticText(self.panel_1, -1, u"密碼:")
        self.pwd_ctrl = wx.TextCtrl(self.panel_1, -1, "6e58f908")
        self.label_6 = wx.StaticText(self.panel_1, -1, u"連接信息")
        self.info_ctrl = wx.TextCtrl(self.panel_1, -1, "", style=wx.TE_MULTILINE)
        self.label_7 = wx.StaticText(self.panel_1, -1, u"發(fā)送指令")
        self.cmd_ctrl = wx.TextCtrl(self.panel_1, -1, "", style=wx.TE_MULTILINE)
        self.send_btn = wx.Button(self.panel_1, -1, u"發(fā)送指令")
        self.static_line_1 = wx.StaticLine(self.panel_1, -1)
        self.logout_btn = wx.Button(self.panel_1, -1, u"退出登錄")
        self.login_btn = wx.Button(self.panel_1, -1, u"遠(yuǎn)程登錄")
        self.clear_btn = wx.Button(self.panel_1, -1, u"清空信息")
        self.exit_btn = wx.Button(self.panel_1, -1, u"退出程序")
        
        # 組件添加屬性值,由wxGlade產(chǎn)生
        self.__set_properties()
        self.__do_layout()
        # 按鈕事件綁定,由wxGlade產(chǎn)生
        self.Bind(wx.EVT_BUTTON, self.OnSend, self.send_btn)
        self.Bind(wx.EVT_BUTTON, self.OnLogout, self.logout_btn)
        self.Bind(wx.EVT_BUTTON, self.OnLogin, self.login_btn)
        self.Bind(wx.EVT_BUTTON, self.OnExit, self.exit_btn)
        self.Bind(wx.EVT_BUTTON, self.OnClear, self.clear_btn)
        # telnet連接標(biāo)志
        self.isconnected=False

        # end wxGlade
    # 連接遠(yuǎn)程計算機(jī)
    def connect(self):
        # 計數(shù)器
        self.temp=0
        # telnet登陸必須參數(shù),端口默認(rèn)23,這里就沒再設(shè)置
        self.HOST=str(self.ip_ctrl.GetValue())
        self.USER=str(self.user_ctrl.GetValue())
        self.PASS=str(self.pwd_ctrl.GetValue())
        self.cmd_ctrl.SetValue(COMMAND[self.temp])
        # 實例化一個telnet對象
        self.tn=telnetlib.Telnet()
        try:
            # 連接,出現(xiàn)異常則宣告連接失敗
            self.tn.open(self.HOST)
            self.info_ctrl.AppendText("已連上遠(yuǎn)程計算機(jī),等待登錄...\n")
            return True
        except:
            self.info_ctrl.AppendText("對不起,遠(yuǎn)程計算機(jī)連接失敗!\n")
            return False
    def login(self):
        # 從遠(yuǎn)程計算機(jī)獲取登錄提示信息,需要輸入用戶名(包含"login"字符串)
        user_info=self.tn.expect(['login:'],5)
        self.info_ctrl.AppendText("反饋:"+user_info[2]+"\n")
        # 發(fā)送用戶名
        self.tn.write(self.USER+'\n')
        self.info_ctrl.AppendText("登錄用戶:"+self.USER+"\n")
        # 從遠(yuǎn)程計算機(jī)獲取登錄提示信息,需要輸入密碼(包含"Password"字符串)
        pwd_info=self.tn.expect(['Password:'],5)
        self.info_ctrl.AppendText("反饋:"+pwd_info[2]+"\n")
        # 發(fā)送密碼
        self.tn.write(self.PASS+'\n')
        self.info_ctrl.AppendText("登錄密碼:"+self.PASS+"\n")
        # 如果登陸成功,會回顯用戶名,這里根據(jù)是否回顯用戶名判斷登陸是否成功
        result=self.tn.expect([self.USER],5)
        self.info_ctrl.AppendText("反饋:"+result[2]+"\n")
        if result[0]==-1:
            self.info_ctrl.AppendText("登錄失敗,請確認(rèn)用戶名和密碼!\n")
            return False
        else:
            self.info_ctrl.AppendText("恭喜你!登陸成功!\n")
            self.info_ctrl.AppendText("等待輸入指令......\n")
            #為了減少用戶錯誤操作,這里加了些手段
            self.logout_btn.Enable(True)
            self.login_btn.Enable(False)
            self.send_btn.Enable(True)
            self.isconnected=True
            return True
    # 發(fā)送telnet指令
    def sendCommand(self,cmd):
        self.send_btn.Enable(False)
        self.info_ctrl.AppendText("指令:"+cmd+"\n")
        self.tn.write(cmd+'\n')
        reply=self.tn.expect(['%'],5)
        self.info_ctrl.AppendText("反饋:"+reply[2]+"\n")
        self.info_ctrl.AppendText("等待輸入指令......\n")
        self.send_btn.Enable(True)
    # 退出telnet登陸
    def logout(self):
        self.tn.close()
        self.info_ctrl.AppendText("成功退出登錄!\n")
        del self.tn
        self.send_btn.Enable(False)
        self.logout_btn.Enable(False)
        self.login_btn.Enable(True)
        self.isconnected=False
    # 組件屬性賦值,由wxGlade產(chǎn)生
    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("小星星遠(yuǎn)程登錄工具")
        self.SetSize((618, 463))
        self.info_ctrl.SetMinSize((600, 180))
        self.cmd_ctrl.SetMinSize((600, 50))
        self.send_btn.Enable(False)
        self.logout_btn.Enable(False)
        # end wxGlade
    # 界面布局,由wxGlade產(chǎn)生(wxGlade的確是個好東西!)
    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        sizer_3 = wx.StaticBoxSizer(self.sizer_3_staticbox, wx.VERTICAL)
        grid_sizer_4 = wx.GridSizer(1, 4, 0, 0)
        grid_sizer_3 = wx.GridSizer(1, 1, 0, 0)
        sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_8 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_7 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_5.Add(self.label_2, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_5.Add(self.ip_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_4.Add(sizer_5, 1, wx.EXPAND, 0)
        sizer_6.Add(self.label_3, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_6.Add(self.port_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_4.Add(sizer_6, 1, wx.EXPAND, 0)
        sizer_7.Add(self.label_4, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_7.Add(self.user_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_4.Add(sizer_7, 1, wx.EXPAND, 0)
        sizer_8.Add(self.label_5, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_8.Add(self.pwd_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_4.Add(sizer_8, 1, wx.EXPAND, 0)
        sizer_3.Add(sizer_4, 1, wx.EXPAND, 0)
        sizer_3.Add(self.label_6, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_3.Add(self.info_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_3.Add(self.label_7, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_3.Add(self.cmd_ctrl, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_3.Add(self.send_btn, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_3.Add(grid_sizer_3, 1, wx.EXPAND, 0)
        sizer_3.Add(self.static_line_1, 0, wx.EXPAND, 0)
        grid_sizer_4.Add(self.exit_btn, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_4.Add(self.clear_btn, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_4.Add(self.logout_btn, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_4.Add(self.login_btn, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_3.Add(grid_sizer_4, 1, wx.EXPAND, 0)
        self.panel_1.SetSizer(sizer_3)
        sizer_2.Add(self.panel_1, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        self.SetSizer(sizer_2)
        self.Layout()
        # end wxGlade
    # 響應(yīng)"發(fā)送指令"按鈕動作,執(zhí)行發(fā)送操作
    def OnSend(self, event): # wxGlade: MyFrame.<event_handler>
        self.sendCommand(str(self.cmd_ctrl.GetValue()))
        self.temp=self.temp+1
        if self.temp>=len(COMMAND):
            self.cmd_ctrl.SetValue("")
        else:
            self.cmd_ctrl.SetValue(COMMAND[self.temp])
    # 響應(yīng)"退出登錄"按鈕動作,執(zhí)行退出登錄操作
    def OnLogout(self, event): # wxGlade: MyFrame.<event_handler>
        self.logout()
    # 響應(yīng)"遠(yuǎn)程登錄"按鈕動作,執(zhí)行登錄操作
    def OnLogin(self, event): # wxGlade: MyFrame.<event_handler>
        self.connect()
        self.login()
        self.temp=0
    # 響應(yīng)"退出程序"按鈕動作,執(zhí)行退出程序操作
    def OnExit(self,event):
        # 當(dāng)然,如果登陸的時候強(qiáng)制退出,為了安全,彈出提示
        if self.isconnected:
            dlg=wx.MessageDialog(parent=None,message="如果現(xiàn)在退出,將會丟失遠(yuǎn)程登錄連接,是否確認(rèn)退出?",caption="警告",style=wx.OK|wx.CANCEL)
            if dlg.ShowModal()==wx.ID_OK:
                self.logout()
                self.Close()
                sys.exit()
        else:
            self.Close()
            sys.exit()
    # 響應(yīng)"清空信息"按鈕動作,執(zhí)行清空消息內(nèi)容
    def OnClear(self,event):
        self.info_ctrl.SetValue("")
# end of class MyFrame

# 主程序入口,這個也是wxGlade產(chǎn)生的
if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 =MyFrame(None, -1, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()

  

發(fā)個python2.6+wxPython+wxGlade實現(xiàn)的簡單telnet客戶端


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩亚洲精品国产色 | 成人免费观看在线网址 | 欧美午夜伦理片 | 99精品久久 | 国产二区三区在线播放 | 一级特黄aa大片欧美 | 男女视频免费在线观看 | 国产精品中文字幕在线 | 国产高清网址 | 欧美日韩国产精品自在自线 | 久久人人精品 | 2021年无线乱码播放高清完整 | 色噜噜色噜噜天天拍一拍 | 亚州中文字幕 | 国产欧美精品一区二区三区四区 | 涩涩色综合亚洲悠悠色 | 色综合网站在线 | 亚洲欧美日韩中文字幕在线一区 | 亚洲12p| 久久久亚洲伊人色综合网站 | 国产精品97在线 | 国产在线一区二区三区 | 久久青草精品免费资源站 | 日本爽爽爽爽爽爽免费 | 成人欧美 | 91视频一区 | 91视频官网| 丁香婷婷电影 | 看一级毛片 | 日本黄视色视频在线观看 | 亚洲国产成a人v在线观看 | 性夜黄 a 爽免费看 性xxxxx视频 | 久久秋霞理论电影 | 欧洲精品久久久 | 日韩深夜福利 | 涩色婷婷狠狠第四四房社区奇米 | 日韩欧美专区 | 亚洲艳情网站 | 亚洲欧美在线观看视频 | 黑丝在线播放 | 天天看天天爽 |