摘要:引言上次有幸觀看梁勝大牛的技術(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
摘要:簡介是使用編寫的一個強(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的...
摘要:在被收購之后,維護(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ù)》,我決定暫時放下...
摘要:一虛擬機(jī)的安裝及配置首先在虛擬機(jī)里安裝這個是已經(jīng)配置好了的文件以及它的使用說明鏈接密碼如果鏈接失效請聯(lián)系我更換注意一定要看文件使用說明文檔切記虛擬機(jī)的帳號密碼都在文檔里有寫地址要關(guān)閉虛擬機(jī)之后再更改二與虛擬機(jī)的連接下連接虛擬機(jī)的步驟關(guān)閉所有 一、虛擬機(jī)的安裝及配置 首先在虛擬機(jī)里安裝ubuntu這個是已經(jīng)配置好了的ubuntu ova文件以及它的使用說明鏈接:https://pan....
閱讀 844·2023-04-25 21:21
閱讀 3226·2021-11-24 09:39
閱讀 3067·2021-09-02 15:41
閱讀 1995·2021-08-26 14:13
閱讀 1827·2019-08-30 11:18
閱讀 2768·2019-08-29 16:25
閱讀 507·2019-08-28 18:27
閱讀 1580·2019-08-28 18:17