国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于tornado的web ssh項目

cheukyin / 727人閱讀

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

引言

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

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

介紹

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

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

長連接
這里使用了websocket,因為類似top這樣的監(jiān)控命令需要服務(wù)器定時推送
在這里,為了提高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)于一個ssh代理服務(wù)器,只要她可以訪問的服務(wù)器,你都可以通過瀏覽器連接登錄而不用任何客戶端

演示

下面是幾張演示圖稿:

最后

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

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

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

相關(guān)文章

  • Tornado-02、編寫第一個tornado程序

    摘要:簡介是使用編寫的一個強(qiáng)大的可擴(kuò)展的服務(wù)器。是一個編寫對請求響應(yīng)的框架。作為程序員,你的工作是編寫響應(yīng)特定條件請求的響應(yīng)的。注意不能序列化一個列表,但是字典是可以的。 1.Tornado簡介 tornado是使用Python編寫的一個強(qiáng)大的、可擴(kuò)展的Web服務(wù)器。它在處理嚴(yán)峻的網(wǎng)絡(luò)流量時表現(xiàn)得足夠強(qiáng)健,但卻在創(chuàng)建和編寫時有著足夠的輕量級,并能夠被用在大量的應(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)文件。我們會在應(yīng)用開發(fā)過程中,保持著調(diào)試器在后臺運(yùn)行。這能提供高效的開發(fā)環(huán)境。我們會把回應(yīng)狀態(tài)設(shè)為已創(chuàng)建。 編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯,一天一篇更新,年終禮包。下面是第23天的內(nèi)容。 今天的《30天學(xué)習(xí)30種新技術(shù)》,我決定暫時放下...

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

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

    cikenerd 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<