我正在调查网络,主要是让我对几件事感到困惑。
首先 - 我需要什么。我的公司在非技术人员使用的linux服务器上运行java应用程序。有时我们必须重新启动这些程序,但首先要杀死它们。
我已经构建了一个小工具(在linux上运行),它使用" jps -lm | grep -v Jps"恢复所有java进程,然后使用分割和模式来制作看起来像它的东西:
You have those programs running:
1. Java A
2. Java B
3. Java C
4. Exit
5. Refresh
他们选择一个号码,它要求批准,如果允许的话,杀死进程(" kill procId")并重新启动(while循环直到他们输入4触发" break")
现在,我想把它带到上面的一个层次,使用网络浏览器来最小化它们在我的linux服务器(sys admin)附近的外观。
现在,我发现烧瓶对我来说很棒,创建了一个网页,甚至设法让它在整个网络上都可用。
我打算做的是我的" jps -lm | grep -v Jps"当有人到达网页时,会被插入到html文件中。 当html准备好后,他们将被重定向到它,按下相应的按钮," onclick = alert('你确定吗?')"将弹出,如果批准将触发a " subprocess.Popen(' kill' + procId,stdout.subprocess.PIPE,shell = True)"将杀死进程的命令,将它们重定向到我的脚本映射当前运行的java的页面,该java将它们重定向到按钮页面。
我能够做除按钮部分以外的所有事情。不知道如何在按下之后将它提供给python。
会恭喜任何帮助。对于映射脚本,我打算使用此解决方案:Create a hyperlink (or button) that executes a python script and then redirects when script completes。
抱歉,如果我的问题构建得很糟糕,那么也会对此提出任何帮助!
谢谢!
答案 0 :(得分:0)
看一下下面的例子我希望有帮助
如果您使用内联javascript,则不必使用此变量,并且可以从ajax请求访问url_for()
。如果您使用单独的javascript文件,则必须将此变量放在模板中,因为.js
文件无法呈现jinja2代码,如{{}}
var flask_endpoint = "{{url_for('endpoint_name')}}"
仅在您的APP使用CSRF的情况下使用:
var csrftoken = "{{ csrf_token() }}";
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken)
}
}
})
如果不是那么跳过
您的javascript应该如下所示(您不必使用done()
回调
$('#button-id').on('click', function(){
var data = {'key': 'some value'};
$.ajax({
type : "POST",
url : flask_endpoint,
data: JSON.stringify(data),
contentType: 'application/json;charset=UTF-8',
}).done(function (result) {
alert(result);
});
alert('data has been sent to the server');
});
下面是你的python代码应该是什么样子
from flask import request
@app.route('/ajax_endpoint', methods=['POST', 'GET'])
def endpoint_name():
# check if the request type is POST (we defined POST for our ajax request)
if request.method == 'POST':
data = request.form['key'] # this is the key in our data object
# do whatever you want with the data