在烧瓶中使用 pxssh 的 SSH 持久连接
SSH persistent connection using pxssh in flask
我正在使用 pxssh 在远程服务器上使用 运行 命令的 Web 界面。无论如何我可以创建持久的 ssh 连接,下面的代码调用 connect_ssh 为每个请求。
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')
试着打电话:
ssh = connect_ssh()
仅在 "app = Flask()" 行下一次,然后重新 运行 它,它将 运行 仅一次。
我正在使用 pxssh 在远程服务器上使用 运行 命令的 Web 界面。无论如何我可以创建持久的 ssh 连接,下面的代码调用 connect_ssh 为每个请求。
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')
试着打电话:
ssh = connect_ssh()
仅在 "app = Flask()" 行下一次,然后重新 运行 它,它将 运行 仅一次。