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

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

다음을 실행하는 서버가 필요합니다.

  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

비슷한 해결책을 찾는 동안 이 문제를 발견했습니다.노출하다.

셸을 포함하여 HTTP 호출을 기반으로 많은 작업을 트리거할 수 있습니다.

관련 정보