Я пытаюсь написать bash-скрипт, который будет выполнять следующий рабочий процесс:
- Telnet к сетевому устройству через IP-адрес на порту 9100
telnet x.x.x.x 9100
- Выполнить команду SGD
! U1 getvar \"internal_wired.ip.timeout.value\"
. - Ожидаемое выходное значение
"10"
.
Вот сценарий bash, который я написал до сих пор:
#!/bin/bash
IP=(x.x.x.x)
for i in ${IP}
do
echo " "
echo "Welcome! This script will check the timeout value of this networked device."
echo "The expected output should be `"10`". Let's get started!!"
echo " "
sleep 4
echo "5....."
sleep 1
echo "4...."
sleep 1
echo "3..."
sleep 1
echo "2.."
sleep 1
echo "1."
sleep 1
echo " "
telnet ${i} 9100 << END_SSH
sleep 5
getvar \"internal_wired.ip.timeout.value\"
sleep 5
END_SSH
done
Когда язапустить этот скрипт через bash mycode.sh
, я получаю следующий вывод в Terminal.app:
$ bash mycode.sh
Welcome! This script will check the timeout value of this networked device.
The expected output should be "10". Let's get started!!
5.....
4....
3...
2..
1.
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
Connection closed by foreign host.
[user@server ~]$
x.x.x.x
- это просто заполнитель IP.
Теоретически, после *В строке 1024 * сценарий должен был выполнить команду ! U1 getvar "internal_wired.ip.timeout.value\"
.
Кроме того, мы должны были получить ожидаемый вывод "10"
.
Когда я впервые написал этот скрипт, у меня изначально не было команды END_SSH
.Коллега представил это мне и сказал обернуть команды telnet
в END_SSH
из-за того, что Терминал технически выпрыгивает из SSH, когда вы находитесь в telnet.Я пытался использовать END_SSH
, но безуспешно.
Как заставить команду telnet успешно работать и получить ожидаемое выходное значение?