Код: Выделить всё
import serial
import time
# Serial port configuration
ser = serial.Serial("/dev/ttyUSB0", timeout=1)
print(f"Connecting to {ser.name}...")
# Strings for prompt detection
initPrompt = "Initializing Flash"
swPrompt = "switch:"
ynPrompt = " (y/n)?"
# Function to wait for specific prompt and send command
def wait_for_prompt_and_send(prompt, command):
while True:
response = ser.read_until(prompt.encode("utf-8")).decode("utf-8")
if prompt in response:
print(f"Found prompt: {prompt}")
ser.write(command)
ser.write(b"\n")
break
# Connect and send initial break commands
ser.write(b"\r")
print("Sent carriage return...")
time.sleep(0.5)
wait_for_prompt_and_send(initPrompt, b"\x03") # break command
# Initialize flash
wait_for_prompt_and_send(swPrompt, b"flash_init\n\n")
# Delete vlan.dat
wait_for_prompt_and_send(swPrompt, b"del flash:vlan.dat\n")
wait_for_prompt_and_send(ynPrompt, b"y\n")
# Delete config.text
wait_for_prompt_and_send(swPrompt, b"del flash:config.text\n")
wait_for_prompt_and_send(ynPrompt, b"y\n")`
ser.close()
Вместо того, чтобы удерживать нажатой физическую кнопку на коммутаторе, сценарий должен выдать команду прерывания после того, как программа запустила инициализирующую флэш-память initPrompt. Однако он этого не делает. Все, что я вижу на консоли Python, это то, что он отправил возврат каретки и нашел подсказку: инициализация flash. Когда я открываю сеанс SecureCRT и проверяю статус запуска, коммутатор выполняет обычную загрузку, поэтому перерыв определенно не сработал.
Win 10 и Python 3.10
Подробнее здесь: https://stackoverflow.com/questions/769 ... set-script