Trebam napisati skriptu za telnet.
Za sada sam otkrio da to "mora" biti skripta za Expect.
Pomoću Autoexpect-a sam uspio kreirati jednu takvu skriptu i uspješno sam je izvršio. Problem je u tome što tako kreirana skripta koristi expect naredbu kojom ocekuje odgovor u takvom obliku. To mi se bas ne sviđa jer nije sigurno da cu uvijek dobivati isti odgovor. Pa sam zbog toga u skripti uklonio sve expect naredbe. Nakon toga sam pokušao izvršiti skriptu, ali su se samo dvije komande izvršile (dva send-a).
Probao sam koristiti veci sleep između naredbi, ali nista, uvijek uspješno pošalje samo dvije komande, a zatim zablokira.
Svaka pomoć je dobrodošla.
Ovdje je procedura za koju želim da se izvršava preko poziva skripte:
1. telnet 192.168.3.12 3000
2. hwm-init act
3. dsp-startup 34 34
4. dsp-mem-wr 34 0x3f000 1 0x800000f1
5. dsp-mem-wr 34 0x3f000 1 0x800000f2
6. dsp-mem-wr 34 0xbfe00 1 0
7. dsp-mem-wr 34 0xbfe04 1 0xc00322c1
8. dsp-mem-wr 34 0xbfe08 1 0xc400
9. dsp-mem-wr 34 0xbfe0c 1 0x3ef
10. dsp-mem-wr 34 0xbfe00 1 1
to zelim da mi se izvrsava preko skripte.
A evo i izgenerirane skripte koja radi:
Code:
#!/usr/bin/expect -f
set force_conservative 1 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
spawn telnet 192.168.3.12 3000
match_max 100000
expect -exact "Trying 192.168.3.12...\r\r
Connected to 192.168.3.12.\r\r
Escape character is '^\]'.\r\r
"
send -- "hwm-init act\r"
expect -exact "hwm-init act\r
HWM init ok\r
\r"
send -- "dsp-startup 3\r"
expect -exact "dsp-startup 3\r
ERROR: Missing parameter!\r
\r \r
\r--------------------------------------------------------------\r
\rdsp-startup <dsp0 dspn> \r
\r \[0..34 0..34\] \r
\rstarts dsp online SW \r
\r--------------------------------------------------------------\r
\r\r
\r"
send -- "4"
expect -exact " "
send -- "dsp-starti"
expect -exact " "
send -- "up 34 34\r"
expect -exact "up 34 34\r
DSP 34: START returned bad result 3\r
\r"
send -- "dsp-mem-wr 34 0x3f000 1 0x800000f1"
expect -exact "dsp-mem-wr 34 0x3f000 1 0x800000f1"
send -- "\r"
expect -exact "\r
data\[0\]: 0x800000f1 \r
\rwrite 0x800000F1 to DSP-adresses 0x0003F000 .. 0x0003F004 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0x3f000 1 0x800000f2"
expect -exact "dsp-mem-wr 34 0x3f000 1 0x800000f2"
send -- "\r"
expect -exact "\r
data\[0\]: 0x800000f2 \r
\rwrite 0x800000F2 to DSP-adresses 0x0003F000 .. 0x0003F004 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe00 1 0"
expect -exact "dsp-mem-wr 34 0xbfe00 1 0"
send -- "\r"
expect -exact "\r
data\[0\]: 0x00000000 \r
\rwrite 0x00000000 to DSP-adresses 0x000BFE00 .. 0x000BFE04 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe04 1 0xc00322c1"
expect -exact "dsp-mem-wr 34 0xbfe04 1 0xc00322c1"
send -- "\r"
expect -exact "\r
data\[0\]: 0xc00322c1 \r
\rwrite 0xC00322C1 to DSP-adresses 0x000BFE04 .. 0x000BFE08 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe08 1 0xc400"
expect -exact "dsp-mem-wr 34 0xbfe08 1 0xc400"
send -- "\r"
expect -exact "\r
data\[0\]: 0x0000c400 \r
\rwrite 0x0000C400 to DSP-adresses 0x000BFE08 .. 0x000BFE0C \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe0c 1 0x3ef"
expect -exact "dsp-mem-wr 34 0xbfe0c 1 0x3ef"
send -- "\r"
expect -exact "\r
data\[0\]: 0x000003ef \r
\rwrite 0x000003EF to DSP-adresses 0x000BFE0C .. 0x000BFE10 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe00 1 1"
expect -exact "dsp-mem-wr 34 0xbfe00 1 1"
send -- "\r"
expect -exact "\r
data\[0\]: 0x00000001 \r
\rwrite 0x00000001 to DSP-adresses 0x000BFE00 .. 0x000BFE04 \r
\r\r
\r"
send -- "quit\r"
expect eof
#!/usr/bin/expect -f
set force_conservative 1 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
spawn telnet 192.168.3.12 3000
match_max 100000
expect -exact "Trying 192.168.3.12...\r\r
Connected to 192.168.3.12.\r\r
Escape character is '^\]'.\r\r
"
send -- "hwm-init act\r"
expect -exact "hwm-init act\r
HWM init ok\r
\r"
send -- "dsp-startup 3\r"
expect -exact "dsp-startup 3\r
ERROR: Missing parameter!\r
\r \r
\r--------------------------------------------------------------\r
\rdsp-startup <dsp0 dspn> \r
\r \[0..34 0..34\] \r
\rstarts dsp online SW \r
\r--------------------------------------------------------------\r
\r\r
\r"
send -- "4"
expect -exact " "
send -- "dsp-starti"
expect -exact " "
send -- "up 34 34\r"
expect -exact "up 34 34\r
DSP 34: START returned bad result 3\r
\r"
send -- "dsp-mem-wr 34 0x3f000 1 0x800000f1"
expect -exact "dsp-mem-wr 34 0x3f000 1 0x800000f1"
send -- "\r"
expect -exact "\r
data\[0\]: 0x800000f1 \r
\rwrite 0x800000F1 to DSP-adresses 0x0003F000 .. 0x0003F004 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0x3f000 1 0x800000f2"
expect -exact "dsp-mem-wr 34 0x3f000 1 0x800000f2"
send -- "\r"
expect -exact "\r
data\[0\]: 0x800000f2 \r
\rwrite 0x800000F2 to DSP-adresses 0x0003F000 .. 0x0003F004 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe00 1 0"
expect -exact "dsp-mem-wr 34 0xbfe00 1 0"
send -- "\r"
expect -exact "\r
data\[0\]: 0x00000000 \r
\rwrite 0x00000000 to DSP-adresses 0x000BFE00 .. 0x000BFE04 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe04 1 0xc00322c1"
expect -exact "dsp-mem-wr 34 0xbfe04 1 0xc00322c1"
send -- "\r"
expect -exact "\r
data\[0\]: 0xc00322c1 \r
\rwrite 0xC00322C1 to DSP-adresses 0x000BFE04 .. 0x000BFE08 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe08 1 0xc400"
expect -exact "dsp-mem-wr 34 0xbfe08 1 0xc400"
send -- "\r"
expect -exact "\r
data\[0\]: 0x0000c400 \r
\rwrite 0x0000C400 to DSP-adresses 0x000BFE08 .. 0x000BFE0C \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe0c 1 0x3ef"
expect -exact "dsp-mem-wr 34 0xbfe0c 1 0x3ef"
send -- "\r"
expect -exact "\r
data\[0\]: 0x000003ef \r
\rwrite 0x000003EF to DSP-adresses 0x000BFE0C .. 0x000BFE10 \r
\r\r
\r"
send -- "dsp-mem-wr 34 0xbfe00 1 1"
expect -exact "dsp-mem-wr 34 0xbfe00 1 1"
send -- "\r"
expect -exact "\r
data\[0\]: 0x00000001 \r
\rwrite 0x00000001 to DSP-adresses 0x000BFE00 .. 0x000BFE04 \r
\r\r
\r"
send -- "quit\r"
expect eof
Kada izbacim sve expect naredbe onda jednostavno ne radi.
Sto bih trebao napraviti da ovo uspjesno proradi, te da na jednostavan nacin mogu dodavati nove komande.