2016-08-09 6 views
0

私はウェブを調査していました。Pythonフラスコでボタンを使ってスクリプトを起動する

最初に必要なもの。私の会社は技術的でない人々が使用する私たちのLinuxサーバー上でJavaアプリケーションを実行します。時にはそれらのプログラムを再起動する必要がありますが、まずそれらを終了してください。

私が使用しています小さなツール(Linux上で実行されます)構築した

|それのように見えるものを作るために分割してパターンを使用して、その後、すべてのJavaプロセスを回復するための「JPSは-lm JPS -v grepの」:

You have those programs running: 
1. Java A 
2. Java B 
3. Java C 
4. Exit 
5. Refresh 

数字を選択します。許可されている場合はプロセスを強制終了し(kill procId)、再起動します(トリガーが4になるまでループします)。

ここでは、Webブラウザを使用して、自分のLinuxサーバー(sys admin)の近くで見た目を最小限に抑えるために、上記のレベルにしたいと考えました。

今、私はフラスコが私にとって素晴らしく、ウェブページを作成し、それをウェブ上で利用できるようにすることさえ見つけました。

私がしようとしているのは、自分の「jps -lm | grep -v Jps」の値が誰かがWebページに到達したときにhtmlファイルに挿入されるということです。 htmlの準備が整うと、リダイレクトされ、適切なボタンを押して、 "onclick = alert( '本当ですか?')"が表示され、承認されれば "subprocess.Popenプロセスを強制終了し、自分のスクリプトがボタンページにリダイレクトする現在の実行中のJavaをマップするページにリダイレクトします。

私はボタンの部分を除くすべてを行うことができます。押された後のpythonでの利用方法を知りません。

助けを薦めるでしょうか。マッピングスクリプトの場合は、このソリューションを使用するつもりでした:Create a hyperlink (or button) that executes a python script and then redirects when script completes

申し訳ありませんが、私の質問がうまく構築されていない場合は、これもどんなヘルプにも役立ちます!

ありがとうございます!

+0

のようになります方法です。あなたのコントローラは、適切なスクリプトを実行することができます – Sugam

+0

私は本当に困難な時間を理解している、なぜ理解できない。コード例を教えてもらえますか?ごめんなさい。 –

+0

ボタンプレス(これについて読むことができます)でajaxリクエストを作成し、このリクエストをフラスココントローラに送信し、リクエストを解析して関連するパラメータを取得する必要があります。そのスクリプトを実行することができます – Sugam

答えて

0

私はそれはあなたがインラインJavaScriptを使用している場合、あなたはこの変数を使用する必要はありませんし、Ajaxのリクエストからurl_for()にアクセスすることができます

を役に立てば幸い下の例を見てみましょう。

:あなたは、別のJavaScriptファイルを使用している場合は、 .jsファイルが唯一のケースでアプリがCSRF USE THISを使用しています {{}}

var flask_endpoint = "{{url_for('endpoint_name')}}" 

ようJinja2のコードをレンダリングすることはできませんしていないので、あなたのテンプレートで、この変数を配置する必要があります

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) 
      } 
     } 
    }) 

THEN ABOVE

スキップされていない場合あなたはJavaScriptを使用して、コールバックdone()

01を使用する必要はありません(次のようになります。以下
$('#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コードを使用すると、ボタンの押しに必要な情報を(コマンドとそのパラメータのような)を含む、JSONペイロードを受け入れる必要がありフラスコのURLエンドポイントを、設計する必要があり

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 
関連する問題