Я собираюсь использовать приведенный ниже скрипт bash для проверки связи с SSH-портом удаленного хоста, который работает правильно:
(: </dev/tcp/$vm_ip/22) &>/dev/null
Теперь на некоторых хостах эта команда будет очень долго (например, 3 минуты)) сообщать о сбое, когда хост не работает.
Я собираюсь добавить поддержку тайм-аута для этой команды и заставить ее быстро вернуться (например, через 5 секунд), если хост не отвечает.
SSH_CMD="(: </dev/tcp/$vm_ip/22) &>/dev/null"
timeout --preserve-status 5 $SSH_CMD
Тем не менее, приведенное выше выдаст ошибку:
timeout: failed to run command ‘(:’: No such file or directory
Можете ли вы помочь мне, как это исправить?
== РЕДАКТИРОВАТЬ 1 ==================
Попытка изменить код следующим образом (без определения переменной):
timeout --preserve-status 2 (: </dev/tcp/$vm_ip/22) &>/dev/null
Ошибка:
./test.sh: line 45: syntax error near unexpected token `('
./test.sh: line 45: ` timeout --preserve-status 2 (: </dev/tcp/$vm_ip/22) &>/dev/null'