Требуется раз в 5 минут проверять открыт ли портделаю так
if [ -z $(netstat -nl|grep -os 8081) ]then
действие
else
echo ok;
fiСистема ubuntu server
когда действительно порт открыт и виден по нетстату то вылезает оишибка
"ожидается использование бинарного..."хотя все работает.
может что-то не так я делаю?
> может что-то не так я делаю?Определённо. Например, пишете, что вылезает ошибка, а что за ошибка - целиком не приводите, а приводите какой-то её кусок. Кто её выдаёт - тоже не пишете, хотя вам bash говорит, что это он. Тем более, что сообщение по-русски, то есть все, у кого локаль настроена на английские сообщения, должны догадываться, от чего это мог бы быть кусок.
Также, зачем писать такой ужас, когда можно вместо первой строчки сделать так:
if netstat -nl | grep -q 8081
Конечно, блоки кода внутри if и else нужно будет поменять местами или добавить "!" после if.
Если планируется потом использовать скрипт на другой платформе, лучше вместо опции grep -q использовать "> /dev/null", так как не все grep'ы одинаково кошерны, но скорее всего для вас это не актуально.Ещё рекомендую добавить опцию netstat --inet.
Что касается самой ошибки, то вероятно она из-за того, что результатом $(...) является строка с пробелом и проверка превращается во что-то вроде
if [ -z 8081 8081 ]
то есть является некорректной с точки зрения синтаксиса bash. Если уж делать так, то нужно взять $(...) в кавычки.
Благодарю за развернутый ответ и помощь.
Хорошего Вам дня!
Спасибо!
Для вящей совместимости можно и редиректы выкинуть.if [ `netstat -nl | grep -c \.8081` -gt 0 ]; then
echo yes;
else
echo no;
fi\.8081 - точка чтоб скрипт не реагировал на набор 8081 в, например, адресах UNIX-сокетов в выводе netstat.
>[оверквотинг удален]
> then
> действие
> else
> echo ok;
> fi
> Система ubuntu server
> когда действительно порт открыт и виден по нетстату то вылезает оишибка
> "ожидается использование бинарного..."
> хотя все работает.
> может что-то не так я делаю?function deistvie() {
echo "ACHTUNG ACHTUNG ACHTUNG" | wall;
}while true
do
echo | nc 208.68.163.220 5222
[ $? == 0 ] && deistvie || echo SLEEP;
sleep ( 300 )
done;