
Мне нужен работающий сервер, который может:
- Отдохни звонок. Он запускает сценарий, когда делается звонок
- Скрипт проверяет, запущена ли база данных.
- Если запущено, то ответьте клиенту, иначе
Success
ответьте клиенту, что произошел сбой
Я не хочу использовать Apache или любой другой крупный веб-сервер. Даже простые скрипты, работающие на порту, подойдут. Я знаю, 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
команды прослушивания на клиенте также необходима для получения ответа Success.
Этот скрипт далек от завершения, и вам также следует написать для него клиент, но он может дать вам некоторые идеи.
Основное здесь — использование nc
. С его помощью можно настраивать простые клиент-серверные архитектуры.
решение3
Я столкнулся с этим, когда искал похожее решение:Goexpose.
Позволяет запускать ряд задач, включая shell, на основе HTTP-вызовов.