flashing-openwrt-expects/ap3825i.expect

87 lines
2.0 KiB
Plaintext
Executable File

#!/usr/bin/expect -d
set timeout 100
exp_internal 1
set send_slow {1 0.005}
#
# A procedure to send a string character by character,
# waiting for each character to be echoed before sending the next.
#
proc reliable_send {str} {
# Set a timeout for waiting for the echo of a single character
set timeout 2
# Loop through each character of the input string
for {set i 0} {$i < [string length $str]} {incr i} {
set char [string index $str $i]
# Send the single character.
# The "--" argument ensures that if the character is a dash,
# it isn't interpreted as an option to the send command.
send -- $char
# Expect the character to be echoed back
expect {
# If the echo is received, continue to the next iteration
-ex $char {
# Optional: uncomment the next line for debugging
# puts "Sent and received: $char"
continue
}
# If we time out waiting for the echo, handle the error
timeout {
puts "ERROR: Timed out waiting for echo of character: '$char'"
exit 1
}
}
}
}
spawn picocom -b 115200 $env(SERIAL_PORT) --logfile $env(OUTPUT_LOG_FILE)
set term_id $spawn_id
spawn ./toggle_jg928a_port.sh $env(LAN_PORT)
set spawn_id $term_id
expect "DRAM"
send " "
expect {[30s timeout]}
expect "login:"
send "admin\n"
expect "password:"
send "new2day\n"
expect {
"Boot (PRI)-> " {
send -s {setenv ramboot_openwrt "setenv ipaddr }
# "
send -s "$env(MACHINE_ADDRESS)"
send -s {; setenv serverip 192.168.0.1; tftpboot 0x2000000 }
send -s "$env(INITRAMFS_FILENAME)"
send -s {; interrupts off; bootm 0x2000000;"}
# "
send -s "\n"
send -s {setenv boot_openwrt "bootm 0xEC000000;"; setenv bootcmd "run boot_openwrt"; saveenv;}
send -s "\n"
}
}
expect {
"Protected 1 sectors\r\nBoot (PRI)-> " {
send -s "run ramboot_openwrt;\n"
}
}
expect {
"Please press Enter to activate this console." {
send "\n"
sleep 5
reliable_send {while true; do sysupgrade }
reliable_send "$env(SYSUPGRADE_URL)"
reliable_send {; done}
reliable_send "\n"
}
}
expect {Sending KILL to remaining processes}