Как я могу выполнить проверку сервисов?

Я новичок с этим из сценариев в Bash, и я пишу один для небольшого PXE-сервера, который в основном выполняет проверку основных важных служб сервера и проверяет, запущены они или нет.

Дело в том, что после выполнения всех проверок с помощью if, что стоило мне понять, как это работает, я хотел бы добавить один, который различает тех, кто на самом деле работает, и тех, которые по разным причинам стоят, и тот же сценарий спрашивает пользователя, не хочет ли он снова попытаться запустить стоящие.

У меня есть следующий код:

#!bin/bash
# Comprobación de servicios e información sobre el sistema #
sleep 3s;
clear;
echo -n  -e '\e[1;33mComprobando estado de los principales servicios... ';
sleep 1s;
echo -e '\e[1;32m¡LISTO!\n';
sleep 1s;

# Estado Server DHCP #
echo -n -e  '\033[1;36m - Server DHCP - \e[0m';
dhcp=$(systemctl is-active isc-dhcp-server);
if [ $dhcp == "inactive" ]
then
echo -e '   [ \033[1;31m DEAD \e[0m ]\n';
elif [ $dhcp == "active" ]
then
echo -e '   [ \033[1;32m OK \e[0m ]\n';
fi
sleep 1s;

# Estado Server TFTP #
echo -n -e  '\033[1;36m - Server TFTP - \e[0m';
tftpd=$(systemctl is-active tftpd-hpa);
if [ $tftpd == "inactive" ]
then
echo -e '   [ \033[1;31m DEAD \e[0m ]\n';
elif [ $tftpd == "active" ]
then
echo -e '   [ \033[1;32m OK \e[0m ]\n';
fi
sleep 1s;

# Estado Server Apache #
echo -n -e  '\033[1;36m - Server Apache - \e[0m';
apache2=$(systemctl is-active apache2);
if [ $apache2 == "inactive" ]
then
echo -e ' [ \033[1;31m DEAD \e[0m ]\n';
elif [ $apache2 == "active" ]
then
echo -e ' [ \033[1;32m OK \e[0m ]\n';
fi
sleep 1s;

# Estado Server FTP #
echo -n -e  '\033[1;36m - Server FTP - \e[0m';
vsftpd=$(systemctl is-active vsftpd);
if [ $vsftpd == "inactive" ]
then
echo -e '    [ \033[1;31m DEAD \e[0m ]\n';
elif [ $vsftpd == "active" ]
then
echo -e '    [ \033[1;32m OK \e[0m ]\n';
fi
sleep 1s;

# Estado Server WebMin #
echo -n -e  '\033[1;36m - Server Webmin - \e[0m';
webmin=$(systemctl is-active webmin);
if [ $webmin == "inactive" ]
then
echo -e ' [ \033[1;31m DEAD \e[0m ]\n';
elif [ $webmin == "active" ]
then
echo -e ' [ \033[1;32m OK \e[0m ]\n';
fi
sleep 2s;
echo -n -e '\e[1;33mRecopilando información del sistema... ';
sleep 1s;
echo -e '\e[1;32m¡LISTO!\n';
screenfetch;

В иллюстративных целях я приложил изображение, чтобы показать, как оно выглядит после его выполнения: introducir la descripción de la imagen aquí

Но я не знаю, как поднять это, учитывая мои плохие знания в написании сценариев.

Любая помощь приветствуется, заранее спасибо.

1
задан 30.11.2019, 02:10
1 ответ

В любом из случаев ты можешь говорить:

dhcp=$(systemctl is-active isc-dhcp-server);

if [ $dhcp == "inactive" ]
then
    read "¿Quieres iniciar el servicio? " si_no
    if [ "$si_no" == "si" ]; then
        systemctl start isc-dhcp-server
    fi
fi

NГіtese конечно, что твой рукописный шрифт podrГ, - чтобы сокращаться используя функции:

Одна funciГіn с parГЎmetros определяется например как:

revisa_servicio () { 
   echo "$1";
}

И называется с revisa_servicio "bla" "ble" (в этом случае imprimirГ - в "bla", что является первым parГЎmetro).

В твоем конкретном случае, podrГ-схвати использовать два parГЎmetros: один для услуги и другого для имени, которое у этого есть.

revisa_servicio () {
    echo -n -e  '\033[1;36m - Server "$2" - \e[0m';
    estado_servicio=$(systemctl is-active "$1");
    if [ $estado_servicio == "inactive" ]; then
        echo -e '   [ \033[1;31m DEAD \e[0m ]\n';
    elif [ $estado_servicio == "active" ]; then
        echo -e '   [ \033[1;32m OK \e[0m ]\n';
    fi
    sleep 1s;
}

И llamarГ-схвати это например говоря 'revisa_servicio "isc-dhcp-server" "DHCP".

MГЎs обычно, podrГ-схвати определять ассоциативный array, чтобы сохранять весь info и asГ - повторять на этом:

declare -A servicios["TFTP"]="tftpd-hpa" servicios["DHCP"]="isc-dhcp-server"
for servicio in "${!servicios[@]}";
do
    revisa_servicio "${servicios[$servicio]}" "$servicio"
done

Таким образом ты можешь помещать столько услуг, как ты захотел просто aГ±adiendo нового servicios["nombre_del_servicio"]="utilidad-en-systemctl".

0
ответ дан 01.12.2019, 10:34
  • 1
    Я думаю, что я понимаю, как оно функционирует сейчас, когда это мне кажется письменным. Одна из проблем, которые у меня есть с programació n в общем, ввиду того, что не sé много, состоит в том, что часто, даже má s простой, он делается мне очень стоит наверху. Большое спасибо, intentaré видеть, если añ adiendo это в рукописный шрифт функционирует. – AVSalas 30.11.2019, 01:58
  • 2
    @AVSalas añ adí generalizació n. Это много концепций сразу, así что я предлагаю тебе пойти блок в блок mirá ndolos спокойно. Если у тебя есть сомнения, предупреди! – fedorqui 30.11.2019, 02:03
  • 3
    Я попробую повторно писать рукописный шрифт для añ adir твои подсказки / ответы и пробовать уменьшать это tambié n немного, относительно lí neas có я говорю, что он относится. Большое спасибо из-за твоей помощи. – AVSalas 30.11.2019, 02:06

Теги

Похожие вопросы