У меня проблемы с отправкой длинных команд с моим ожидаемым скриптом. Я использую Telnet для доступа к маршрутизатору:
#! /usr/bin/expect -f
#
#
spawn telnet 192.168.0.5
expect {
"login:"{
send "admin\r"expect "Password:"send "admin\r"
expect ">"send "enable\r"expect "Password:"send "\r"
# My Command
expect "#"send "terminal length 0\r"expect "#"send "show running-config | include ip nat pool-group\r"}
}
expect "#"send "exit\r"
Я использую exec в php для запуска скрипта выше
<?php
exec(mybinfile , $returnvalue);
print_r($returnvalue);
Когда я проверяю вывод, похоже, что отправлена неправильная команда. Но все же, это работает. Почему он выводит это так?
Результат выглядит так:
[14] => R1#terminal length 0
[15] => R1#show running-config | include ip nat pool-gro$ng-config | include ip nat pool-grou $ng-config | include ip nat pool-group
Я попытался уменьшить количество символов в моей команде, как в примере ниже, и это нормально:
show running-config | include ip nat pool-gro
Буду ли я сталкиваться с проблемами, если это вывод, который я вижу в print_r
?
В дополнение к выдаче terminal length 0
команда, вы также можете выдать terminal width 511
Команда для предотвращения переноса строк. Это решило подобную проблему для нас.
От документация:
Чтобы задать ширину отображения информации во время сеансов консоли, используйте ширина терминала Команда в режиме глобальной конфигурации. Чтобы отключить, используйте нет Форма этой команды.
ширина терминала столбцы
нет терминальной ширины столбцы
Смотрите также этот вопрос на ServerFault.
Других решений пока нет …