Win 또는 Mac 사용자가 내 Unix 컴퓨터에서 스크립트를 시작하도록 허용 [닫기]

Win 또는 Mac 사용자가 내 Unix 컴퓨터에서 스크립트를 시작하도록 허용 [닫기]

회사 인트라넷의 동료에게 공개하려는 UNIX 시스템에 단일 매개변수(테이블 이름)가 있는 Python 스크립트가 있습니다. 즉, 다른 시스템의 특정 사용자가 특정 시스템에서 프로그램을 실행하기를 원합니다. 이에 대한 표준 솔루션이 있습니까?

스크립트에는 사용자에게 표시되어야 하는 출력이 없습니다. 동료들은 가능한 모든 운영 체제를 가지고 있으며 저는 누구나 사용할 수 있고 설치도 쉬운 간단하고 최소한의 솔루션을 원했습니다. 시스템의 쉘/cmd 프롬프트에 "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 표준입니다.

관련 정보