Я написал простой сценарий TCL / Expect для автоматизации некоторых команд на коммутаторе Cisco.Сценарий отправляет однострочные команды, хотя я столкнулся с двумя проблемами.
Во-первых, оболочка теперь показывает мне wait1.1>, а не root> Это теперь постоянно на моем Kali Linux RPi box.Я думал, что оболочка по умолчанию изменилась, поэтому я попытался "chsh / usr / bin / bash" без удачи.Затем я ввел «#! / Usr / bin / bash», а также «#! / Usr / bin / env bash»
Терминал по-прежнему показывает wait1.1> и каждый раз, когда я использую новую команду, такую как«ls», «cd» или другая команда окружения. Я получаю инкрементное значение, например «Ожидаем1,2», «Ожидание 1,3» и т. д.
Два, после запуска команд, последовательный порт становится занятым,Я знаю это, потому что когда я запускаю новый терминал и пытаюсь подключиться к коммутатору с помощью Minicom, я не могу подключиться.Для того чтобы я смог подключиться, я должен отсоединить кабель Ethernet от коммутатора и подключиться заново.
Кто-нибудь знает, почему у меня есть две вышеуказанные проблемы?
Сценарий, который я написал / выполнил,:
#!/usr/bin/expect -f
# exp_internal 1 ;# Can enable this line for debugging. add -df above
# set the portID and open it for reading and writing
set portID [open /dev/ttyUSB0 r+]
set baud 9600
# Configure the port with the baud rate
# and dont block on read, dont buffer output
fconfigure $portID -mode "9600,n,8,1"
fconfigure $portID -blocking 0 -buffering none
spawn -open $portID
set timeout 2
send -- "\r"
after 100
# puts "Modem Echo: $portID"
# expect -re "Would you like to enter the initial configuration dialog?" ;# Something wrong with this line, it is not matching
# using the below instead
expect -re "yes/no"
after 100
send -- "no\r"
after 100
send -- "enable\r"
after 100
# puts "Modem Echo: [read $portID]"
after 100
send -- "configure terminal\r"
#puts "Modem Echo: [read $portID]"
after 100
# At a later date, modify this next line to take user input on the number
# of ports on the switch in question
send -- "interface range GigabitEthernet 0/1-8\r"
# puts "Modem Echo: [read $portID]"
after 100
send -- "power inline static\r"
# puts "Modem Echo: [read $portID]"
after 2000
send -- "no cdp enable\r"
# puts "Modem Echo: [read $portID]"
after 100
send -- "exit\r"
#puts "Modem Echo: [read $portID]"
after 100
send -- "exit\r"
# puts "Modem Echo: [read $portID]"
after 100
send -- "copy running-config startup-config\r"
after 100
# puts "Modem Echo: [read $portID]"
after 100
# expect -re "Destination filename" ;#Problem with this line
# going to ignore what to expect and just send a return
send -- "\r"
expect "#"
after 100
send -- "exit\r"
expect "#"
# close $portID
close
В этом сообщении я получил большую помощь от этого сообщества: Коммуникационный порт Linux Expect / TCL Comm Port Switch
Буду признателен за любые советы.