Как справиться с зависанием из-за команды ssh из сценария bash?

Вы можете попробовать swconfig dev switch0 show, если ваш маршрутизатор работает на процессоре Atheros или Marvell. Он работает на моем Buffalo WZR -HP -G300NH2 с процессором Atheros с прошивкой DD -WRT v24SP2 -MULTI (03.06.12 )std -сборка 19154 . swconfigотсутствует на маршрутизаторе с процессором Broadcom.

Вывод будет похож на этот.

root@LivingRMAP:~# swconfig dev switch0 show
Global attributes:
enable_vlan: 0
Port 0:
mask: 0x004e: (0) 1 2 3 6
qmode: 0
pvid: 0
link: port:0 link:down
Port 1:
mask: 0x004d: 0 (1) 2 3 6
qmode: 0
pvid: 0
link: port:1 link:up speed:100baseT full-duplex
Port 2:
mask: 0x004b: 0 1 (2) 3 6
qmode: 0
pvid: 0
link: port:2 link:up speed:1000baseT full-duplex
Port 3:
mask: 0x0047: 0 1 2 (3) 6
qmode: 0
pvid: 0
link: port:3 link:up speed:1000baseT full-duplex
Port 4:
mask: 0x0020: (4) 5
qmode: 0
pvid: 0
link: port:4 link:down
Port 5:
mask: 0x0010: 4 (5)
qmode: 0
pvid: 0
link: port:5 link:up speed:1000baseT full-duplex
Port 6:
mask: 0x000f: 0 1 2 3 (6)
qmode: 0
pvid: 0
link: port:6 link:up speed:1000baseT full-duplex
0
10.01.2020, 08:36
3 ответа

Утилита timeoutможет быть вашим выбором для этого:

timeout 5 ssh $ipaddress ibstat

завершится с ненулевым -результатом через 5 секунд, установите разумное значение, достаточное для завершения работы ibstat

0
28.01.2020, 02:38

Вы можете сначала проверить доступность хоста:

if ping -c 1 $ipaddress &> /dev/null
then
  ssh $ipaddress ibstat
else
  exit 1
fi
0
28.01.2020, 02:38

Используйте параметр ConnectTimeOutс низким значением, которое может потребоваться настроить для вашей конкретной среды.:

$ ssh -o ConnectTimeout=2 $ipaddress
ssh: connect to host 192.168.123.123 port 22: Connection timed out
$ echo $?
255

Вы даже получаете возвращаемое значение, которое можно проверить-255означает, что при обработке команды произошла ошибка.

1
28.01.2020, 02:38

Теги

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