在烧瓶中使用pxssh的SSH持久连接 [英] SSH persistent connection using pxssh in flask

查看:222
本文介绍了在烧瓶中使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆