На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 11.02.2022 09:52
привет.
Система ubuntu 20.04.3 LTS.
Простенький скрипт проверки сети сервера.
Код: Выделить всё
#!/usr/bin/bash
CUR="curl -Is --connect-timeout 15"
if $CUR https://www.google.com /dev/null 2>&1; then
elif sleep 120 && $CUR https://www.google.com /dev/null 2>&1; then
else
echo 'DOWN SERV.'
reboot
fi
exit 0
При запуске скрипта выдает ошибку.
Код: Выделить всё
sh /root/up_down.sh
/root/up_down.sh: 4: Syntax error: "elif" unexpected
Не пойму что не так, пробовал убирать elif, оставлять только else, тогда ругается на else.
Последний раз редактировалось bars 11.02.2022 18:54, всего редактировалось 1 раз.
ormorph
Сообщения: 2289
ОС: Gentoo
Сообщение
ormorph » 11.02.2022 10:31
bars писал: ↑ 11.02.2022 09:52
Не пойму что не так, пробовал убирать elif, оставлять только else, тогда ругается на else
После then должен выполняться какой нибудь оператор. Добавьте хотя бы после каждого then:
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 11.02.2022 10:46
Код: Выделить всё
#!/bin/bash
CUR="curl -Is --connect-timeout 15"
if $CUR https://www.google.com /dev/null 2>&1; then
echo >/dev/null
else
echo 'DOWN SERV.'
fi
exit 0
Странно почему условие else выполняется если гугл доступен по сети.
Код: Выделить всё
sh /root/up_down.sh
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Fri, 11 Feb 2022 07:43:14 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Fri, 11 Feb 2022 07:43:14 GMT
cache-control: private
set-cookie: CONSENT=PENDING+427; expires=Sun, 11-Feb-2024 07:43:14 GMT; path=/; domain=.google.com; Secure
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
DOWN SERV.
Странная интерпритация bash в убунту.
ormorph
Сообщения: 2289
ОС: Gentoo
Сообщение
ormorph » 11.02.2022 11:16
bars писал: ↑ 11.02.2022 10:46
Странная интерпритация bash в убунту.
Ни чего тут странного, сами посмотрите свой код, по правилам у вас не должно быть вывода. Вывод у вас присутствует, так как вы не послали вывод в /dev/null, а /dev/null выполняется как параметр curl, от сюда и ошибка. Добавьте знак
> .
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 11.02.2022 12:10
Сделал так.
Код: Выделить всё
#!/bin/bash
CUR=$(curl -LI --connect-timeout 15 https://www.google.com -o /dev/null -w '%{http_code}\n' -s)
if [ ${CUR} -eq "200" ]
then
echo >/dev/null
elif sleep 60 && curl -LI --connect-timeout 15 https://www.google.com -o /dev/null; then
echo >/dev/null
else
reboot
fi
exit 0
Bizdelnick
Модератор
Сообщения: 20039
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 11.02.2022 13:54
ormorph писал(а): ↑ 11.02.2022 10:31
Добавьте хотя бы после каждого then:
Лучше
true или его синоним
: . Зачем лишний раз файл открывать-закрывать и что-то писать?
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
Bizdelnick
Модератор
Сообщения: 20039
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 11.02.2022 14:05
bars писал: ↑ 11.02.2022 12:10
Сделал так.
Код: Выделить всё
#!/bin/bash
CUR=$(curl -LI --connect-timeout 15 https://www.google.com -o /dev/null -w '%{http_code}\n' -s)
if [ ${CUR} -eq "200" ]
then
echo >/dev/null
elif sleep 60 && curl -LI --connect-timeout 15 https://www.google.com -o /dev/null; then
echo >/dev/null
else
reboot
fi
exit 0
Это ужасно. Совершенно нечитаемо. Почему не сделать хотя бы так?
Код: Выделить всё
#!/bin/sh
CUR=$(curl -LI --connect-timeout 15 https://www.google.com -o /dev/null -w '%{http_code}\n' -s)
if [ "${CUR}" -ne 200 ]; then
sleep 60
if ! curl -LI --connect-timeout 15 https://www.google.com -o /dev/null; then
reboot
fi
fi
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 11.02.2022 15:34
Хмм, что то запутался, а что это означает ! в данном случае?
Добавлено (15:35):
Bizdelnick писал: ↑ 11.02.2022 13:54
Лучше true или его синоним :. Зачем лишний раз файл открывать-закрывать и что-то писать?
Можете пояснить по этому поводу, не пойму.
Bizdelnick
Модератор
Сообщения: 20039
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 11.02.2022 15:44
bars писал: ↑ 11.02.2022 15:34
Хмм, что то запутался, а что это означает ! в данном случае?
Логическое отрицание. Код выхода меняется с 0 на 1 или с ненулевого значения на 0.
bars писал: ↑ 11.02.2022 15:34
Можете пояснить по этому поводу, не пойму.
Не могу. Попробуйте перечитать ещё раз.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик