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

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

Django實(shí)現(xiàn)WebSSH操作物理機(jī)或虛擬機(jī)的方法

2024-09-02 12:20:51
字體:
供稿:網(wǎng)友

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

WebSSH操作物理機(jī)或虛擬機(jī)

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

這就比較簡單了,既然我們已經(jīng)實(shí)現(xiàn)了瀏覽器操作Kubernetes的Pod,那么想想操作Pod和物理機(jī)虛擬機(jī)有什么區(qū)別呢?

整個(gè)數(shù)據(jù)流是一點(diǎn)沒變:用戶打開瀏覽器--》瀏覽器發(fā)送websocket請求給Django建立長連接--》Django與要操作的服務(wù)器建立SSH通道,實(shí)時(shí)的將收到的用戶數(shù)據(jù)發(fā)送給SSH后的主機(jī),并將主機(jī)執(zhí)行的結(jié)果數(shù)據(jù)返回給瀏覽器

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

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

連接建立,可以通過如下方法給SSH通道發(fā)送數(shù)據(jù)

self.ssh_channel.send(data)

當(dāng)然SSH返回的數(shù)據(jù)也可以通過如下方法持續(xù)的輸出給Websocket

while not self.ssh_channel.exit_status_ready(): # SSH返回的數(shù)據(jù)需要轉(zhuǎn)碼為utf-8,否則json序列化會(huì)失敗 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

有了這些信息,結(jié)合詳解基于django實(shí)現(xiàn)的webssh簡單例子的文章,實(shí)現(xiàn)WebSSH瀏覽器操作物理機(jī)或者虛擬機(jī)就不算困難了,完整的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 # 打開一個(gè)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() # 連接建立一次,之后交互數(shù)據(jù)不會(huì)再進(jìn)入該方法 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連接需要的參數(shù) 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', ''))
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
精品美女国产在线| 国产一级二级在线观看| 老太脱裤让老头玩ⅹxxxx| 国产一区二区视频网站| 在线观看国产中文字幕| 91av在线播放视频| 99re在线视频这里只有精品| 日韩av卡一卡二| 中文在线不卡视频| 国产精品国产自产拍高清av| av成人 com a| 最近中文字幕免费在线观看| 九九久久精品视频| 人妻丰满熟妇av无码久久洗澡| 久久爱91午夜羞羞| 国产精品传媒在线观看| 久久精品视频一区二区三区| jizzjizzji欧美| 日韩一区二区麻豆国产| 蜜臀一区二区三区| 国产对白在线正在播放| 黄色手机在线视频| 91香蕉视频导航| 国产伦精品一区二区三区免费| 国产成人免费在线视频| 欧美日韩中文字幕| 日本不卡高字幕在线2019| 日韩在线观看| 残酷重口调教一区二区| 国产精品91久久久久久| 日本精品裸体写真集在线观看| 精品国产三区在线| 超碰人人干人人| 欧美欧美欧美欧美首页| 国产乱码精品一区二区三| 色婷婷av一区二区三区之e本道| 成人在线爆射| 丝袜美腿一区| 91www在线| 夜色视频网站| 国产a∨精品一区二区三区仙踪林| 久草视频免费在线播放| 国产精品77777竹菊影视小说| 欧美日韩日日摸| 99久久久国产精品无码免费| 日韩欧美www| 中文字幕日韩精品久久| 秋霞在线一区二区| av三级在线观看| 欧美不卡一区二区三区| 亚洲欧美韩国综合色| 精品偷拍一区二区三区在线看| 国产毛片久久久久久| 自己做鸭怎么接单寻找客源| 国产91对白在线观看九色| 日韩一区二区三区四区五区六区| 国产男女无遮挡| 老子影院午夜伦不卡大全| 91精品国产91久久久久久吃药| 97精品国产97久久久久久免费| aa级大片免费在线观看| 性欧美16一18| 国产精品传媒精东影业在线| 免费男同深夜夜行网站| 91国产中文字幕| 男女激情无遮挡| 欧美sm精品调教视频| 福利精品视频| heisi视频网在线观看| 欧美性猛交xxxx黑人交| 丁香激情视频| 精品视频免费观看| 成人激情久久| 国产吃瓜黑料一区二区| 手机成人av在线| 激情图片在线观看高清国产| 色多多国产成人永久免费网站| 中文字幕一区二区三区人妻不卡| 成人羞羞视频免费| 久久伊人资源站| 国产精品久久久久7777按摩| 国产午夜精品视频| 影视一区二区| 中文字幕中文字幕中文字幕亚洲无线| 成人午夜电影小说| 亚洲人成电影院色| 欧美精品乱码视频一二专区| 欧美日韩国产区| 精品视频免费观看| 五月天激情视频在线观看| 欧美一区观看| 国产精品一区二区三区在线观| 在线观看av中文字幕| 色婷婷成人在线| jizzjizz免费大全| 少妇人妻大乳在线视频| 久久精品日产第一区二区三区精品版| 久久综合免费视频| 欧美日韩在线高清| 黄色污污视频在线观看| 91在线视频18| av在线网页| 一个人免费播放在线视频看片| 久久久久99精品一区| 欧洲精品一区二区三区在线观看| 国产精品亚洲第一区在线暖暖韩国| 精品人妻互换一区二区三区| 呦呦视频在线观看| 中文字幕在线网| 婷婷六月综合亚洲| 久久综合久久综合亚洲| 羞羞的网站在线观看| 亚洲高清成人影院| jlzzjlzz亚洲日本少妇| 欧美爱爱免费视频| **网站欧美大片在线观看| 日本成人a网站| 国产一级淫片a| 日韩久久视频| 免费全黄无遮挡裸体毛片| 欧美亚洲国产一区在线观看网站| av电影在线地址| 蜜桃视频一区二区三区| 国产精品18久久久久久vr| 国产精品久久久久久久久借妻| 久久久久久久久久看片| 精品一区二区三区蜜桃在线| 国产美女精品人人做人人爽| 黑丝美女久久久| 亚洲亚洲免费| 蜜桃视频www网站在线观看| www在线视频观看| 4444kk亚洲人成电影在线| 午夜一区二区三区四区| 91精品啪在线观看国产18| 精品久久久久成人码免费动漫| 俺去啦;欧美日韩| 麻豆av一区二区| 欧美亚洲一级| 天美星空大象mv在线观看视频| 岛国在线视频免费看| 电影午夜精品一区二区三区| 欧美主播一区二区三区美女 久久精品人| 大伊人狠狠躁夜夜躁av一区| 91精品国产综合久久久久久| 91精品国产99久久久久久| 男人捅女人免费视频| 中文字幕综合网| 久久久精品综合| 免费成人看片| 日本大片免费看| 国产精品久久久久久久小唯西川| 欧美自拍视频在线观看| 欧美疯狂性受xxxxx喷水图片| 懂色av中文字幕一区二区三区| 综合久久99| 中文字幕国产亚洲| 黄网av在线| 7777精品伊人久久久大香线蕉经典版下载| 先锋资源中文在线| 91看片在线观看| 欧美亚洲伦理www| 欧美96一区二区免费视频| 精品婷婷色一区二区三区蜜桃| 精品国产精品国产偷麻豆| 欧美成ee人免费视频| 99re国产精品| 成人国内精品久久久久一区| 成人夜晚看av| 男人亚洲天堂网| 一区二区福利| 欧美午夜在线一二页| 亚洲精品男人的天堂| 国产精品国产三级国产aⅴ9色| 九色自拍视频在线观看| x99av成人免费| 幼a在线观看| 国产真实乱全部视频| 婷婷综合伊人| 欧美激情伊人电影| 久久久久国产精品午夜一区| 91大神在线播放精品| 超碰人人人人人人人| 日韩视频中文| 性网站在线免费观看| 日本在线中文字幕一区| 国内老熟妇对白hdxxxx| 欧美最猛黑人猛交69| 国精产品乱码一区一区三区四区| 亚洲精品日日夜夜| 五月天视频一区| 蜜桃视频在线观看成人| 日韩电影一区二区三区| 欧美尤物巨大精品爽| 精品伊人久久久久7777人| 欧美色图亚洲自拍| 日本在线免费观看| 青青草综合在线| 少妇一级淫免费放| 久久久精品视频网站| 日韩欧美一级精品久久| 激情久久久久久久久久久久久久久久| 精品中文字幕一区二区三区av| 色偷偷av一区二区三区| 国精产品一区一区三区视频| 免费h片在线| 综合136福利视频在线| xfplay资源站色先锋在线观看| 亚洲理伦在线| 欧美色网在线| 中国女人内谢25xxxx免费视频| 亚洲成人av免费在线观看| 国产精品国产三级国产aⅴ| 久久只精品国产| 一道本一区二区三区| 国产成人av电影在线播放| 人妻少妇精品无码专区久久| 蜜臀av色欲a片无码精品一区| 欧美老肥妇做.爰bbww| 亚洲精品一区二区三区婷婷月| 国产高清成人久久| 中文字幕在线视频第一页| 欧美狂野激情性xxxx在线观| 日本色图在线| 九色porny自拍视频在线播放| 国产成人精品av| 精品成人免费一区二区在线播放| 成人久久网站| 日韩色妇久久av| 亚洲国产精品久久人人爱蜜臀| 中文字幕第5页| 4438国产精品一区二区| 日韩免费观看高清完整版在线观看| 欧美日韩精品免费观看视一区二区| 男人天堂v视频| 欧美伊人久久久久久午夜久久久久| 欧美日韩一级二级三级| 日韩中文字幕在线免费观看| 欧美日韩激情一区二区三区| 免费av网站观看| 一区二区亚洲精品国产| 国产人妻人伦精品| 久久久精品视频在线观看| 国产私拍精品| 是的av在线| 色哟哟免费在线观看| 激情网址大全| 日韩黄色短视频| 三级全黄做爰视频| 亚洲最大福利视频网站| 亚洲黄色一区| 亚洲精品传媒| 中文字幕久久午夜不卡| 亚洲av无码一区二区三区dv| 亚洲电影一区| 精品91久久| 97se亚洲国产综合自在线观| 日韩中文字幕一区二区高清99| 国产麻豆一区二区三区| 亚欧激情乱码久久久久久久久| 制服诱惑一区二区| 国产欧美一区二区三区小说| 亚洲成av人片在线观看无码| 欧美久久一级| 亚洲日本在线天堂| 图片小说视频色综合| 国产视色精品亚洲一区二区| 日本夜爽爽一二区| 成人性做爰片免费视频| 日本一区视频在线观看| 国产在线日韩精品| 欧美日韩精品一区二区| 午夜不卡在线视频| 亚洲av无码久久精品色欲| av在线网站免费观看| 国产在线网站| 久久久久久久久久久久网站| 国产无套粉嫩白浆在线2022年| 福利成人在线观看| 日本高清视频在线| 亚洲精品久久久久久久久久久| 国产香蕉尹人视频在线| 欧美特级www| 小鲜肉gaygays免费动漫| 欧美私人啪啪vps| 成年女人免费毛片视频永久| 性欧美一区二区| 性欧美视频videos6一9| 男人免费av| 亚洲第一视频| 中文字幕在线亚洲精品| 日韩欧美www| 波多野结衣乳巨码无在线| аⅴ资源新版在线天堂| 国产精品免费一区二区三区观看| 久久久亚洲欧洲日产国码αv| 精品日产一区2区三区黄免费| 影音先锋久久久| 亚洲欧美日本一区| 欧洲性xxxx| 亚洲av毛片成人精品| av网站在线免费播放| 精品久久久久99| 国产精品另类一区| 国产主播欧美精品| 福利一区福利二区微拍刺激| 亚洲免费观看高清完整版在线观| 丝袜中文在线| 日韩啊v在线| 天天综合天天综合| 长河落日免费高清观看| 天天干天天插天天操| 蜜桃视频在线观看免费视频网站www| 一区二区三区欧美在线| 黄色毛片在线| 奇米四色中文综合久久| 亚洲综合一区二区三区| 亚洲一区二区三区免费视频| 变态黄色小视频网站| 欧美成人日本| 一区二区三区久久久| 亚洲熟女少妇一区二区| 欧美成人高清在线| 国产另类xxxxhd高清| 精品中文一区| 亚洲成人精品久久| www.中文字幕在线| 久久电影一区|