2016-11-18 2 views
0

это мой сценарий»Простой «ожидать» сценарий войти и вопрос CLI команды на маршрутизаторе Cisco длится два ОЖИДАЕТ долго

#!/usr/bin/expect -f 
set USERNAME "user" 
set PASSWORD "password" 
set ENABLEPSW "enable-password" 
set HOST "host-fqdn" 
spawn ssh -o StrictHostKeyChecking=no [email protected]$host-fqdn 
expect "Password: " 
send "$PASSWORD\n" 
expect "*# " 
send "config t\n" 
expect "*(config)# " 
send "vlan 250\n" 
expect "(config-vlan)# " 
send "name NEWNAME\n" 

В основном я хочу сценарий к SSH, избежать CERT проверки, войдите в систему , запустите маршрутизатор в режиме конфигурации, затем перейдите в режим конфигурации vlan 250 и, наконец, переименуйте vlan. Что происходит, так это то, что скрипт достигает режима config-vlan, но сразу же выходит из сценария перед выпуском этой последней команды. никогда не выбрасывает эту последнюю команду. Последняя проверка «ожидание» правильно настроена.

[email protected]:/# ./routerconnect.sh 
spawn ssh -o StrictHostKeyChecking=no [email protected] 
User Access Verification 
Password: 
Cisco Nexus Operating System (NX-OS) Software 
TAC support: http://www.cisco.com/tac 
Copyright (C) 2002-2015, Cisco and/or its affiliates. 
All rights reserved. 
The copyrights to certain works contained in this software are 
owned by other third parties and used and distributed under their own 
licenses, such as open source. This software is provided "as is," and unless 
otherwise stated, there is no warranty, express or implied, including but not 
limited to warranties of merchantability and fitness for a particular purpose. 
Certain components of this software are licensed under 
the GNU General Public License (GPL) version 2.0 or 
GNU General Public License (GPL) version 3.0 or the GNU 
Lesser General Public License (LGPL) Version 2.1 or 
Lesser General Public License (LGPL) Version 2.0. 
ROUTER# config t 
Enter configuration commands, one per line. End with CNTL/Z. 
ROUTER(config)# interface vlan 250 
ROUTER(config-vlan)# 
[email protected]:/# 
+1

Префикс ваших линий с четырьмя пробелами. Пожалуйста, взгляните на [edit-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

Должны ли вы еще несколько команд 'ожидать' и' send' ждать следующего запроса и сохранять конфигурацию? – Barmar

+0

Извините, я не эксперт в сценариях оболочки или tcl. Не уверен, что вы имеете в виду больше ожидать и отправлять команды. – ds3010

ответ

1

Вам нужно подождать, пока закончится команда name. Так что попробуйте вот так:

send "name NEWNAME\n" 
# The last command finishes only when you see the next prompt. 
expect "(config-vlan)# " 
+0

Большое вам спасибо! – ds3010

Смежные вопросы