스크립트를 실행하고 응답하는 간단한 서버

스크립트를 실행하고 응답하는 간단한 서버

다음을 수행할 수 있는 서버가 실행되어야 합니다.

  1. 휴식을 취하세요. 전화가 걸려오면 스크립트를 실행합니다.
  2. 스크립트는 데이터베이스가 실행 중인지 확인합니다.
  3. 실행 중인 경우 클라이언트에 다시 응답하고, 그렇지 않으면 Success실패로 다시 응답하십시오.

나는 아파치나 다른 주요 웹 서버를 사용하고 싶지 않습니다. 포트에서 실행되는 간단한 스크립트도 가능합니다. 나도 알고 있지만 python -m SimpleHTTPServer파일 액세스만 제공하는 것 같아요.

포트에서 실행되고 응답하는 간단한 Java 프로그램을 작성할 수 있지만 몇 가지 간단한 솔루션을 찾고 있습니다.

답변1

내가 상상할 수 있는 가장 사소한 서비스 중 하나는 xinetd에서 실행하는 것입니다. 이는 xinetd 자체가 상대적으로 가볍지만 요청 제한, TCP 래퍼 등과 같은 로깅 및 보안 제한을 포함하여 모든 네트워킹 관련 작업을 처리할 수 있다는 장점이 있습니다.

아직 설치되지 않은 경우 xinetd를 설치하고 다음과 같은 사용자 정의 서비스를 정의하십시오 /etc/xinetd.d/helloworld.

service helloworld
{
    disable         = no
    port            = 1234
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = nobody
    server          = /usr/local/bin/hello-world.sh
    server_args     = test
    instances       = 1
    type            = unlisted
}

xinetd를 다시 로드/다시 시작하면 telnet localhost 1234.

매뉴얼 페이지에는 man xinetd.conf사용 가능한 옵션에 대한 설명이 꽤 잘 나와 있습니다.

답변2

몇 가지 간단한 명령을 사용하여 BASH에서 해당 작업을 수행합니다 nc.

#!/bin/bash

nc -k -l -p PORT > tempfile

while true
do
    if cat tempfile | grep request;
    then
        # Execute checker script
        # Reply back with nc
        : > tempfile # Clear tempfile
    fi
    sleep 1
done

이를 위해서는 클라이언트 설정 nc도 필요합니다. nc성공 응답을 받으려면 클라이언트에서 수신 명령을 설정해야 할 수도 있습니다.

이 스크립트는 완전하지 않으므로 클라이언트도 작성해야 하지만 몇 가지 아이디어를 얻을 수 있습니다.

여기서 가장 기본적인 것은 을 사용하는 것입니다 nc. 이를 통해 간단한 클라이언트-서버 아키텍처를 설정할 수 있습니다.

답변3

비슷한 솔루션을 찾는 동안 이 문제가 발생했습니다.Goexpose.

HTTP 호출을 기반으로 셸을 포함한 다양한 작업을 트리거할 수 있습니다.

관련 정보