让 Win 或 Mac 用户在我的 unix 机器上启动脚本

让 Win 或 Mac 用户在我的 unix 机器上启动脚本

我在 UNIX 机器上有一个带有单个参数(表名)的 python 脚本,我想将其公开给公司内部网上的同事。即我想让来自不同系统的某些用户在特定机器上运行该程序。对此有标准的解决方案吗?

该脚本没有需要显示给用户的输出。同事们拥有所有可能的操作系统,我希望有一个简单、简约的解决方案,任何人都可以使用,并且对我来说很容易安装。像在系统上的 shell/cmd 提示符中键入“telnet 主机名 脚本名 表名”之类的操作就可以用于界面。无需身份验证。当然,我可以创建一个 Web 界面,但对于如此简单的任务来说似乎有些过分了。

如果可以通过 telnet 完成,您能给我举个例子吗?

答案1

这是一个小型独立的示例python3服务器(与 python2 类似)仅显示一个 html 按钮,您可以按下该按钮来生成可用于运行程序的 POST 请求。在这个简单的代码中,实际的 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 上侦听,您当然需要更改上述内容。使用 POST 而不仅仅是 GET url 会使浏览器要求用户在刷新时确认帖子。这是具有“副作用”的 CGI 标准。

相关内容