2015-05-14 1 views
0

Я пытаюсь написать сценарий на Mac, который должен получить доступ к маршрутизатору через telnet. Это повышает мощность маршрутизатора, что невозможно сделать через Интернет.Использование ожидать на Mac для доступа к маршрутизатору через telnet

Проблема заключается в том, что канал телнет заблокирован, и для того, чтобы разблокировать его мне нужно выполнить следующую инструкцию:

/users/shared/telnetenable - 200CC8132A36 admin password >/dev/udp/192.168.0.1/23 

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

#!/usr/bin/expect -f 

и всем инструкциям предшествует икру, например.

spawn telnet 192.168.0.1 

в то время как команда отправляется на маршрутизатор:

send "wl -a wl0 txpwr 100\n" 

Моя проблема заключается в том, что я не знаю, как запустить через икру команду, которая открывает телнет на маршрутизаторе. Кто-нибудь может мне помочь?

+0

Где эти инструкции должны быть дана? – Dinesh

ответ

1

Для запуска неинтерактивной команды вам не нужно использовать spawn. Tclexec команды достаточно. Например:

#!/usr/bin/expect 

# the ``/dev/udp/host/port'' syntax is bash specific 
exec bash -c "https://stackoverflow.com/users/shared/telnetenable - 200CC8132A36 \ 
       admin password > /dev/udp/192.168.0.1/23" 

spawn telnet 192.168.0.1 
... ... 

Expect также имеет команду system, так что вы можете также

system "https://stackoverflow.com/users/shared/telnetenable - 200CC8132A36 \ 
     admin password > /dev/udp/192.168.0.1/23" 
+0

Exec не работает (он отвечает «не может записать файл /dev/udp/192.168.0.1» или что-то в этом роде), но система работает нормально. Большое спасибо. – Enrico

+0

Просто понял, что синтаксис '/ dev/udp/192.168.0.1/23' является' bash' специфичным. Я обновил команду 'exec', чтобы использовать' bash'. – pynexj