
다음을 수행할 수 있는 서버가 실행되어야 합니다.
- 휴식을 취하세요. 전화가 걸려오면 스크립트를 실행합니다.
- 스크립트는 데이터베이스가 실행 중인지 확인합니다.
- 실행 중인 경우 클라이언트에 다시 응답하고, 그렇지 않으면
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 호출을 기반으로 셸을 포함한 다양한 작업을 트리거할 수 있습니다.