亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

基于tornado的web ssh項(xiàng)目

cheukyin / 857人閱讀

摘要:引言上次有幸觀看梁勝大牛的技術(shù)分享,其中一個(gè)演示是瀏覽器中顯示了一個(gè)終端并登錄管理,于是決定自己實(shí)現(xiàn)一個(gè)中有一個(gè)項(xiàng)目實(shí)現(xiàn)了此功能,本來想學(xué)習(xí)一下,但是考慮到代碼實(shí)在過多就放棄了,下面說下自己的實(shí)現(xiàn)。

引言

上次有幸觀看梁勝大牛的技術(shù)分享,其中一個(gè)演示是瀏覽器中顯示了一個(gè)linux終端并登錄管理server,于是決定自己實(shí)現(xiàn)一個(gè)
github中有一個(gè)項(xiàng)目gateone實(shí)現(xiàn)了此功能,本來想學(xué)習(xí)一下,但是考慮到代碼實(shí)在過多就放棄了,下面說下自己的實(shí)現(xiàn)。

項(xiàng)目地址:[webssh]: https://github.com/xsank/webssh
歡迎大家拍磚

介紹

終端展示
使用了github開源項(xiàng)目 term.js,這是個(gè)很贊的項(xiàng)目,因?yàn)樵趧傞_始寫的時(shí)候你會(huì)發(fā)現(xiàn)linux返回的很多內(nèi)容帶有特殊字符,需要窮舉處理,而這里正好有一個(gè)框架幫你做了這些復(fù)雜的操作
例如,linux 本身返回的字符是這樣子的:

所以你需要對于特殊字符格式化處理,才能正確顯示成linux終端的文本行

長連接
這里使用了websocket,因?yàn)轭愃苩op這樣的監(jiān)控命令需要服務(wù)器定時(shí)推送
在這里,為了提高server端性能及效率,使用了epoll的ET模式,主要代碼如下:

def run(self):
    while True:
        epoll_list = self.select.poll()
        for fd, events in epoll_list:
            if select.EPOLLIN & events:
                while True:
                    try:
                        data = self.bridges[fd].shell.recv(1024)
                    except socket.error, e:
                        if e.errno == errno.EAGAIN:
                            self.select.modify(fd, select.EPOLLET)
                        elif isinstance(e, socket.timeout):
                            break
                        else:
                            self.close(fd)
                    try:
                        self.futures[fd].send(data)
                    except StopIteration:
                        break
            elif select.EPOLLHUP & events:
                self.close(fd)
            else:
                continue

由epoll來管理所有websocket連接即事件處理

ssh登錄
使用第三方paramiko庫來支持server的加密登錄
總結(jié)來說,webssh相當(dāng)于一個(gè)ssh代理服務(wù)器,只要她可以訪問的服務(wù)器,你都可以通過瀏覽器連接登錄而不用任何客戶端

演示

下面是幾張演示圖稿:

最后

如果使用上有任何問題,歡迎提給我:
Email:xsank#foxmail.com

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/45398.html

相關(guān)文章

  • Tornado-02、編寫第一個(gè)tornado程序

    摘要:簡介是使用編寫的一個(gè)強(qiáng)大的可擴(kuò)展的服務(wù)器。是一個(gè)編寫對請求響應(yīng)的框架。作為程序員,你的工作是編寫響應(yīng)特定條件請求的響應(yīng)的。注意不能序列化一個(gè)列表,但是字典是可以的。 1.Tornado簡介 tornado是使用Python編寫的一個(gè)強(qiáng)大的、可擴(kuò)展的Web服務(wù)器。它在處理嚴(yán)峻的網(wǎng)絡(luò)流量時(shí)表現(xiàn)得足夠強(qiáng)健,但卻在創(chuàng)建和編寫時(shí)有著足夠的輕量級(jí),并能夠被用在大量的應(yīng)用和工具中。 tornado的...

    silencezwm 評論0 收藏0
  • Day 25: 聯(lián)合Tornado、MongoDB 和 AngularJS 進(jìn)行應(yīng)用開發(fā)

    摘要:在被收購之后,維護(hù)并繼續(xù)發(fā)展。設(shè)置是告訴應(yīng)用在目錄尋找應(yīng)用模板。設(shè)置告訴應(yīng)用使用目錄里面的類似圖像文件等靜態(tài)文件。我們會(huì)在應(yīng)用開發(fā)過程中,保持著調(diào)試器在后臺(tái)運(yùn)行。這能提供高效的開發(fā)環(huán)境。我們會(huì)把回應(yīng)狀態(tài)設(shè)為已創(chuàng)建。 編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯,一天一篇更新,年終禮包。下面是第23天的內(nèi)容。 今天的《30天學(xué)習(xí)30種新技術(shù)》,我決定暫時(shí)放下...

    hsluoyz 評論0 收藏0
  • Tornado-01、ubuntu環(huán)境配置與連接pycharm

    摘要:一虛擬機(jī)的安裝及配置首先在虛擬機(jī)里安裝這個(gè)是已經(jīng)配置好了的文件以及它的使用說明鏈接密碼如果鏈接失效請聯(lián)系我更換注意一定要看文件使用說明文檔切記虛擬機(jī)的帳號(hào)密碼都在文檔里有寫地址要關(guān)閉虛擬機(jī)之后再更改二與虛擬機(jī)的連接下連接虛擬機(jī)的步驟關(guān)閉所有 一、虛擬機(jī)的安裝及配置 首先在虛擬機(jī)里安裝ubuntu這個(gè)是已經(jīng)配置好了的ubuntu ova文件以及它的使用說明鏈接:https://pan....

    cikenerd 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<