Избавиться от ошибки «connection reject» в скрипте bash

У меня есть эта строка:

exec 3<>/dev/tcp/127.0.0.1/9091 > /dev/null 2>&1 || { PORT_IS_FREE="yes"; }; 

который проверяет, доступен ли порт 9091. Если соединение не может быть выполнено, я получаю эту ошибку:

 my-script: connect: Connection refused my-script: line 6: /dev/tcp/127.0.0.1/9091: Connection refused 

конечно, эта ошибка не плохая новость, это означает, что порт свободен. Как я могу предотвратить запись журнала ошибок? Я попытался отправить stdout / stderr в / dev / null, но, видимо, это не трюк.

Бонус:

Я set -e в верхней части скрипта – все остановится, если соединение будет отклонено – как я могу предотвратить эту остановку, если ожидается ошибка на определенной строке, подобной приведенной выше?

Итак, у меня есть две цели:

  1. Избавьтесь от сообщения об ошибке, потому что он ожидается, и мне не нужны мои пользователи библиотеки, чтобы это увидеть.

  2. Игнорируйте ошибку, как и ожидалось, и я по-прежнему хочу использовать set -e, если это возможно.

One Solution collect form web for “Избавиться от ошибки «connection reject» в скрипте bash”

Чтобы использовать set -e но допустить известную ошибку, используйте это заклинание:

 /bin/false || : 

Это использует || оператора, чтобы «потреблять» ошибку, чтобы она считалась нефатальной для среды, в которой set -e .

Вы уже используете 2>/dev/null для подавления стандартной ошибки, так что вы уверены, что ошибка исходит из строки, которую вы цитируете здесь? Кроме того, вместо использования exec я предлагаю в качестве более читаемой альтернативы:

 if ! nc -z localhost 9091 1> /dev/null 2>&1; then port_free="yes" fi 

Поскольку код возврата nc проверяется оператором if , это также безопасно после set -e .

  • SSH туннель к маршрутизатору периодически зависает. Проблема с TCP?
  • Как отключить выгрузку контрольной суммы tcp на OSX 10.11.6?
  • Альтернатива ArpRetryCount в CentOS
  • Убейте любую службу, запущенную на определенном порту
  • проверить прием пакетов tcp ниже уровня tcpdump
  • Как сервер узнает, какой клиентский порт должен отправлять?
  • Можно ли использовать iptables для контроля тайм-аутов TCP / сбросов в масштабах всей системы?
  • Как ограничить весь трафик tcp сетевому интерфейсу, на котором был запущен сеанс?
  • Linux fedora - пакет httpd и маршрутизатор, как заставить его работать?
  • Строка iptables, не отбрасывающая пакет из потоков tcp при использовании conntrack и string
  • Есть ли способ настроить TCP на потерю пакетов и повторную передачу?
  • Interesting Posts

    Как определить объем пространства, выделенного для их командной строки?

    Установка беспроводного драйвера rtl8812au на Centos 7

    Не удалось загрузить Linux / Windows, так как в BIOS нет загрузочных записей

    Захват экрана «perf top» или других интерактивных программ

    Такая же настройка на нескольких компьютерах

    Внутренний путь не установлен в GVim при запуске из gvim.desktop

    Разделение gzip-файла на более мелкие gz-файлы без повторного сжатия

    Бах Глобстар

    разделять файл, передавать каждую часть в качестве параметра скрипту, запускать каждый скрипт параллельно

    Невозможно отредактировать / proc / sys / net / core / wmem_max

    Выбор диапазона журналов из ежедневных архивов журналов

    Почему добавление пространства подкачки является самой медленной частью процесса загрузки?

    Отслеживание последних выпусков

    Подстановка расширений файлов на переменную

    Как пользователь может запустить программу в режиме ядра?

    Linux и Unix - лучшая ОС в мире.