WinまたはMacユーザーが自分のUnixコンピュータでスクリプトを起動できるようにする[閉じる]

WinまたはMacユーザーが自分のUnixコンピュータでスクリプトを起動できるようにする[閉じる]

会社のイントラネットの同僚に公開したいUNIXシステムに単一のパラメータ(テーブル名)を持つPythonスクリプトがあります。つまり、他のシステムの特定のユーザーが特定のシステムでプログラムを実行したいとします。これに対する標準的な解決策はありますか?

スクリプトには、ユーザーに表示する必要がある出力はありません。同僚は、可能なすべてのオペレーティングシステムを持っており、私は誰でも利用可能で、インストールも簡単でシンプルで最小限のソリューションを望んでいました。システムのシェル/cmdプロンプトに「telnetホスト名スクリプト名テーブル名」と入力するのと同じ方法がインターフェイスに機能します。認証は不要です。もちろん、Webインターフェイスを作成することもできますが、このような簡単な作業を行うには余りにも過度に思えます。

Telnet経由でできれば、例えば、どうすればいいですか?

ベストアンサー1

以下は、小さなスタンドアロンの例です。python3サーバー(python2に似ています)プログラムを実行するために使用できるPOSTリクエストを生成するために押すことができるhtmlボタンのみを表示します。この単純なコードでは、実際のURLは無視されます。合理的な値などを確認する必要があります。

#!/usr/bin/python3
# http://unix.stackexchange.com/a/315334/119298
from http.server import BaseHTTPRequestHandler, HTTPServer 

body = """
 <body><form method="post" enctype="multipart/form-data" action="/runcmd">
       <input type="submit" name="submit" value="Do Update">
       </form>
 <hr>
"""
class handlerequest(BaseHTTPRequestHandler): 
    def do_POST(self):
        # run my command. if ok:
        reply = "result was ok"
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write(bytes(body+reply, "utf8"))

    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write(bytes(body, "utf8"))

server = HTTPServer(('', 80), handlerequest) 
server.serve_forever()

すでにポート80を受信して​​いるサーバーがある場合は、もちろん上記を変更する必要があります。 GET URLの代わりにPOSTを使用すると、ブラウザは更新時にユーザーに投稿を確認するように要求します。これは「副作用」を持つCGI標準です。

おすすめ記事