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.

Kako napisati skriptu za telnet?