다음을 실행하는 서버가 필요합니다.
- 브레이크콜에 응답하세요. 호출되면 스크립트가 트리거됩니다.
- 이 스크립트는 데이터베이스가 실행 중인지 확인합니다.
- 클라이언트가 실행 중이면 응답하고, 그렇지 않으면
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 호출을 기반으로 많은 작업을 트리거할 수 있습니다.