[ ivbrcic @ 08.02.2006. 12:04 ] @
Problem je slijedeći: 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 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. |