亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Django實現WebSSH操作物理機或虛擬機的方法

2024-09-02 12:20:51
字體:
來源:轉載
供稿:網友

我想用它替換掉xshell、crt之類的工具

WebSSH操作物理機或虛擬機

上篇文章給大家介紹詳解基于django實現的webssh簡單例子,有小伙伴說咖啡哥,我們現在還沒有用上Kubernetes,但我想通過瀏覽器連接我們的物理機和虛擬機該怎么辦?

這就比較簡單了,既然我們已經實現了瀏覽器操作Kubernetes的Pod,那么想想操作Pod和物理機虛擬機有什么區別呢?

整個數據流是一點沒變:用戶打開瀏覽器--》瀏覽器發送websocket請求給Django建立長連接--》Django與要操作的服務器建立SSH通道,實時的將收到的用戶數據發送給SSH后的主機,并將主機執行的結果數據返回給瀏覽器

唯一不一樣的地方就是Django與要操作的服務器建立SSH通道的方式,在Kubernetes中是通過Kubernetes提供的API建立的Stream流,而操作物理機或者虛擬機的時候我們可以使用Paramiko模塊來建立SSH長連接隧道,Paramiko模塊建立SSH長連接通道的方法如下:

# 實例化SSHClientssh = paramiko.SSHClient()# 當遠程服務器沒有本地主機的密鑰時自動添加到本地,這樣不用在建立連接的時候輸入yes或no進行確認ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 連接SSH服務器,這里以賬號密碼的方式進行認證,也可以用keyssh.connect(hostname=host, port=port, username=username, password=password, timeout=8)# 打開ssh通道,建立長連接transport = ssh.get_transport()self.ssh_channel = transport.open_session()# 獲取ssh通道,并設置term和終端大小self.ssh_channel.get_pty(term=term, width=cols, height=rows)# 激活終端,這樣就可以正常登陸了self.ssh_channel.invoke_shell()

連接建立,可以通過如下方法給SSH通道發送數據

self.ssh_channel.send(data)

當然SSH返回的數據也可以通過如下方法持續的輸出給Websocket

while not self.ssh_channel.exit_status_ready(): # SSH返回的數據需要轉碼為utf-8,否則json序列化會失敗 data = self.ssh_channel.recv(1024).decode('utf-8','ignore') if len(data) != 0: message = {'flag': 'success', 'message': data} self.websocket.send(json.dumps(message)) else: break

有了這些信息,結合詳解基于django實現的webssh簡單例子的文章,實現WebSSH瀏覽器操作物理機或者虛擬機就不算困難了,完整的Consumer代碼如下:

import ioimport jsonimport paramikofrom threading import Threadfrom channels.generic.websocket import WebsocketConsumerfrom cmdb.backends.sshargs import argsclass SSHBridge(object): def __init__(self, websocket): self.websocket = websocket def connect(self, host, port, username, authtype, password=None, pkey=None, term='xterm', cols=80, rows=24): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: if authtype == 2: pkey = paramiko.RSAKey.from_private_key(io.StringIO(pkey)) ssh.connect(username=username, hostname=host, port=port, pkey=pkey, timeout=8) else: ssh.connect(hostname=host, port=port, username=username, password=password, timeout=8) except Exception as e: message = json.dumps({'flag': 'error', 'message': str(e)}) self.websocket.send(message) return False # 打開一個ssh通道并建立連接 transport = ssh.get_transport() self.ssh_channel = transport.open_session() self.ssh_channel.get_pty(term=term, width=cols, height=rows) self.ssh_channel.invoke_shell() # 連接建立一次,之后交互數據不會再進入該方法 for i in range(2): recv = self.ssh_channel.recv(1024).decode('utf-8', 'ignore') message = json.dumps({'flag': 'success', 'message': recv}) self.websocket.send(message) def close(self): try: self.websocket.close() self.ssh_channel.close() except BaseException as e: pass def _ws_to_ssh(self, data): try: self.ssh_channel.send(data) except OSError as e: self.close() def _ssh_to_ws(self): try: while not self.ssh_channel.exit_status_ready(): data = self.ssh_channel.recv(1024).decode('utf-8', 'ignore') if len(data) != 0: message = {'flag': 'success', 'message': data} self.websocket.send(json.dumps(message)) else: break except Exception as e: message = {'flag': 'error', 'message': str(e)} self.websocket.send(json.dumps(message)) self.close() def shell(self, data): Thread(target=self._ws_to_ssh, args=(data,)).start() Thread(target=self._ssh_to_ws).start()class SSHConsumer(WebsocketConsumer): def connect(self): self.pk = self.scope['url_route']['kwargs'].get('id') self.query = self.scope.get('query_string') self.user = self.scope['user'] self.accept() # ssh_connect_args為SSH連接需要的參數 ssh_connect_args = args(self.pk, self.user, self.query) self.ssh = SSHBridge(websocket=self) self.ssh.connect(**ssh_connect_args) def disconnect(self, close_code): self.ssh.close() def receive(self, text_data=None): text_data = json.loads(text_data) self.ssh.shell(data=text_data.get('data', ''))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日本另类| 亚洲国产精品视频在线观看| 欧美日韩国产麻豆| 精品久久久久久久大神国产| 久久韩国免费视频| 亚洲第一页自拍| 日韩av资源在线播放| 91久久精品日日躁夜夜躁国产| 欧美乱妇40p| 欧美性极品xxxx娇小| 欧美一区二区三区艳史| 国产精品美女午夜av| 最新日韩中文字幕| 亚洲一区二区在线播放| 911国产网站尤物在线观看| 日韩一区二区三区在线播放| 久久影视电视剧凤归四时歌| 亚洲欧美激情视频| 日韩欧美亚洲一二三区| 久久久人成影片一区二区三区观看| 国产精品69久久久久| 欧美中文在线观看国产| 国产福利精品av综合导导航| 日本不卡视频在线播放| 亚洲激情免费观看| 51ⅴ精品国产91久久久久久| 2019亚洲日韩新视频| 欧美日韩精品在线播放| 国产色婷婷国产综合在线理论片a| 亚洲香蕉在线观看| 深夜福利一区二区| 成人性生交大片免费观看嘿嘿视频| 成人中文字幕+乱码+中文字幕| 日本精品久久中文字幕佐佐木| 亚洲第一页在线| 91日韩在线视频| 欧美性色视频在线| 欧美亚洲日本黄色| 欧美日韩国产精品专区| 91av视频在线观看| 欧美日韩另类在线| 亚洲国产成人在线播放| 欧美性69xxxx肥| 影音先锋欧美精品| 国产噜噜噜噜噜久久久久久久久| 久久精品国产亚洲一区二区| 成人av资源在线播放| 亚洲国产精品系列| 国产午夜精品一区理论片飘花| 亚洲国产精品美女| 日韩av色综合| 热久久99这里有精品| 91亚洲精品久久久| 欧美在线影院在线视频| 欧美成人午夜剧场免费观看| 亚洲国产第一页| 色婷婷av一区二区三区在线观看| 欧美精品电影在线| 性亚洲最疯狂xxxx高清| 中文字幕不卡在线视频极品| 久久网福利资源网站| 亚洲性无码av在线| 亚洲人成在线观看网站高清| 亚洲奶大毛多的老太婆| 5252色成人免费视频| 欧美巨乳美女视频| 色悠悠久久久久| 美女精品视频一区| 国产精品精品久久久| 国产第一区电影| 亚洲精品久久久久久久久久久久久| 欧美性xxxx在线播放| 亚洲跨种族黑人xxx| 亚洲欧美日韩国产中文| 成人精品久久久| 久久久女女女女999久久| 亚洲欧美制服丝袜| 中文字幕不卡av| 韩剧1988在线观看免费完整版| 91av视频在线观看| 成人亚洲综合色就1024| 国产成一区二区| 国产91亚洲精品| 日韩在线观看精品| 欧美夫妻性生活xx| 日韩精品在线观| 久久久噜噜噜久久中文字免| 日韩一区二区精品视频| 亚洲最大福利网| 欧美黑人国产人伦爽爽爽| 久久久久久久久亚洲| 日韩免费看的电影电视剧大全| 91亚洲国产成人精品性色| 91免费视频网站| 热久久这里只有精品| 91精品美女在线| 7m第一福利500精品视频| 精品亚洲男同gayvideo网站| 久久国产精品视频| 午夜剧场成人观在线视频免费观看| 日韩高清免费在线| 久久在线观看视频| 欧美日韩国产一区中文午夜| 尤物yw午夜国产精品视频| 亚洲精品视频免费| 日韩美女在线看| 欧美一乱一性一交一视频| 精品视频—区二区三区免费| 久久免费在线观看| 91欧美精品午夜性色福利在线| 欧美与欧洲交xxxx免费观看| 一个人看的www欧美| 国产精品劲爆视频| 精品久久久久久久久久国产| 色妞久久福利网| 亚洲有声小说3d| 日韩av在线一区| 日韩成人在线播放| 亚洲欧美激情在线视频| 欧美精品免费播放| 国产精品一区二区久久久| 国产欧美一区二区三区久久人妖| 国产中文字幕亚洲| 亚洲午夜精品久久久久久性色| 91av中文字幕| 九九久久精品一区| 久久成人综合视频| 国产精品一区二区久久久| 欧美日韩性生活视频| 国产综合久久久久| 综合激情国产一区| 精品久久久久久久久中文字幕| 热久久99这里有精品| 亚洲欧美日韩高清| 欧美日韩中文字幕综合视频| 日韩电影在线观看永久视频免费网站| 欧美激情在线观看| 日韩女优人人人人射在线视频| 国产一级揄自揄精品视频| 国产精品免费视频xxxx| 黑人巨大精品欧美一区二区免费| 日韩av免费在线观看| 日av在线播放中文不卡| 久久中文字幕视频| 国产午夜精品一区理论片飘花| 少妇久久久久久| 欧美一级片在线播放| 日韩免费av在线| 亚洲国产精品久久久| 最新91在线视频| 中文字幕国产精品| 午夜精品久久久久久久男人的天堂| 日本一区二三区好的精华液| 中文字幕日韩有码| 亚洲第一网中文字幕| 国产欧美日韩中文| 国产精品视频资源| 国产精品com| 国产精品99久久久久久久久久久久| 成人精品一区二区三区电影免费| 久久久国产精品x99av| 久久久久久久激情视频| 国产精品吴梦梦| 亚洲深夜福利视频|