在烧瓶中使用pxssh的SSH持久连接 [英] SSH persistent connection using pxssh in flask
本文介绍了在烧瓶中使用pxssh的SSH持久连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用web界面在远程服务器上使用pxssh运行命令。有没有反正我可以创建持久的SSH连接,下面的代码调用connect_ssh为每个请求。
从瓶子进口烧瓶,jsonify,render_template ,请求g,current_app $ b $ from flask import _app_ctx_stack $ b $ from pexpect import pxssh
$ b $ app = Flask(__ name__)
def connect_ssh ():
s = pxssh.pxssh()
s.login('localhost','user','passwd')
return s
$ b $ def get_ssh ):
top = _app_ctx_stack.top
如果不是hasattr(top,'ssh_conn'):
top.ssh_conn = connect_ssh()
返回top.ssh_conn
@ app.route('/ _ remote_cmd')
def remote_cmd():
cmd = request.args.get('cmd','',type = str)
ssh = get_ssh()
ssh.sendline(cmd)
ssh.prompt()
res = ssh.before
return jsonify(result = res )
@ app.route('/')
def index():
return render_template('index.htm l')
if __name__ =='__main__':
app.run('0.0.0.0')
解决方案
尝试调用:
$ b $ ssh = connect_ssh()
只在app = Flask()行下执行一次,然后重新运行,只运行一次。
I am working on web interface to run command on remote servers using pxssh. Is there anyway I can create persistent ssh connection, below code calls connect_ssh for every request.
from flask import Flask, jsonify, render_template, request, g, current_app
from flask import _app_ctx_stack
from pexpect import pxssh
app = Flask(__name__)
def connect_ssh():
s = pxssh.pxssh()
s.login('localhost', 'user', 'passwd')
return s
def get_ssh():
top = _app_ctx_stack.top
if not hasattr(top, 'ssh_conn'):
top.ssh_conn = connect_ssh()
return top.ssh_conn
@app.route('/_remote_cmd')
def remote_cmd():
cmd = request.args.get('cmd', '', type=str)
ssh = get_ssh()
ssh.sendline(cmd)
ssh.prompt()
res = ssh.before
return jsonify(result=res)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run('0.0.0.0')
解决方案
Try calling:
ssh = connect_ssh()
only once under "app = Flask()" line and rerun it and it will run only once.
这篇关于在烧瓶中使用pxssh的SSH持久连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文