The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Скрипт с массивом и считыванием в переменную части строки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Скрипт с массивом и считыванием в переменную части строки"  +/
Сообщение от polka email(ok) on 02-Сен-11, 19:19 
Уважаемые форумчане, прошу вас не бить меня тапком и не ссылаться, что есть куча решений-гугл в помощь, ветка форума изучена, особенно тема про expect, но не хватает опыта, поделиться которым прошу вас.

Задача следующая. написать скрипт выполнения однотипных операций для подсети маски 27.

Проблема в том, что:

1. не могу найти пример реализации автоматического входа на оборудование в массиве, то есть
192.168.1.2 - залогинился, выполнил команды, пошел на 192.168.1.3, опять выполнил команды,  ----и так далее---как цикл правильно оформлять?
2. при вводе логина-пароля появляется hostname, который необходимо внести в один из пунктов этой же железки в теле самого цикла- нужно записать строку в переменную.

Если вручную, то так, алгоритм прост:

telnet 192.168.1.2
username:admin
password:*****
Router2>en
Router2#  (запомнить строку до символа решетки в строковую переменную Tab)
Router2#conf t
Router2#bridgeport circuit-id client Tab ( строковую переменную вставляем)
Router2#copy run start
Router2#exit
telnet 192.168.1.3
............
аналогично как и для предыдущего адреса.

А программная реализация для меня непосильна.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт с массивом и считыванием в переменную части строки"  +/
Сообщение от beebeeep email on 02-Сен-11, 22:27 
cat << EOF > ./config.expect
#!/usr/bin/expect -f
set host [lrange $argv 0 0]

spawn telnet $host

expect "username"
send "admin\r"

expect "password"
send "*****\r"

expect ">"
send "en\r"

expect -indices -re "(.*)#"
set hostname $expect_out(0,string)
send "conf t\r"

expect "#"
send "bridgeport circuit-id client Tab $hostname\r"

expect "#"
send "copy run start\r"

expect "#"
send "exit\r"
expect eof
EOF

for x in `seq 2 30`; do ./config.expect 192.168.1.$x; done

Как-то так, наверное. Не проверял.

>[оверквотинг удален]
> Router2>en
> Router2#  (запомнить строку до символа решетки в строковую переменную Tab)
> Router2#conf t
> Router2#bridgeport circuit-id client Tab ( строковую переменную вставляем)
> Router2#copy run start
> Router2#exit
> telnet 192.168.1.3
> ............
> аналогично как и для предыдущего адреса.
> А программная реализация для меня непосильна.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Скрипт с массивом и считыванием в переменную части строки"  +/
Сообщение от beebeeep email on 02-Сен-11, 22:29 
Ну и chmod +x ./config.expect не забыть ага

>[оверквотинг удален]
>> Router2>en
>> Router2#  (запомнить строку до символа решетки в строковую переменную Tab)
>> Router2#conf t
>> Router2#bridgeport circuit-id client Tab ( строковую переменную вставляем)
>> Router2#copy run start
>> Router2#exit
>> telnet 192.168.1.3
>> ............
>> аналогично как и для предыдущего адреса.
>> А программная реализация для меня непосильна.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Скрипт с массивом и считыванием в переменную части строки"  +/
Сообщение от polka email(ok) on 05-Сен-11, 12:30 
Благодаря терпению отличного человека  beebeeep на свет родился функционирующий скрипт, удовлетворяющий поставленной задаче темы, делюсь с другими:

#!/usr/bin/expect -f
set host [lrange $argv  0 0]
spawn telnet $host
expect "username"
send "admin\r"
expect "password"
send "admin\r"
expect -indices -re "\n(.*)#"
set Tab $expect_out(1,string)
send "conf t\r"
send "bridgeport circuit-id client $Tab \r"
expect "#"
send "copy run start\r"
expect "(y/n)?"
send "y\r"
expect "#"
send "quit\r"
expect eof

Самое хорошее, внутри цикла можно модифицировать исполняемые команды, расширять, заливать- на что хватит желания и потребностей. Спасибо.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру