[Udpcast] problem reading from keyboard in a script with udp-sender

DeadManMoving sequel at neofreak.org
Wed Mar 8 19:04:01 CET 2006


On Wed, 2006-03-08 at 10:36 +0100, Alain Knaff wrote:
> > Thanks a lot!
> > 
> > Tony
> 
> I just tried this, both with an udp-sender running on the host
> system, 
> and in the embedded system. In both cases, it worked as expected.
> In order to check what happens if it can't restore the console to a 
> working state, I also tried, in both cases (embedded and server), to 
> kill -9 udp-sender while it was waiting for the start signal. It did 
> even work in that case (although the user's input was not echo'ed by
> the 
> tty in that case, the shell still got it all right).
> 
> Here are the scripts I used for testing:
> 
> On server:
> 
> #!/bin/sh
> 
> udp-sender -f /bin/ls
> echo Shell read
> read a
> echo Got $a
> 
> In the embedded system (installed as a post script):
> 
> #!/bin/sh
> 
> read a
> echo Got $a
> 
> 
> On a third machine, I had an udp-receiver running for the test.
> 
> In all 4 cases, it worked (embedded/success, embedded/kill-9, 
> server/success, server/kill-9)
> 
> Could you supply details of your script and environment where it
> fails?
> 
> Thanks,
> 
> Alain 

Hi Alain,

thanks a lot for your time and answer; this is highly appreciated.

The first thing that catch my attention is that i use a pipe instead of
the -f switch.

Here is the relevant portion of my script :



case ${yes_or_no} in

        Y|y|yes|Yes|YES)
                start_srv
                alive=$( expr $alive \+ $dead )
                echo
                echo
                echo
                for host in ${ghost_host[*]}; do
                        echo "Starting udp-receiver on host $host."
                        sleep 1
                        prep_host $host
                done
                echo
                echo
                sleep 5
             echo "All hosts ready, starting udp-sender on $SHORT_HOST."
                sleep 5
                echo
                echo
                cd ${IMG_DIR}

/usr/local/sbin/udp-sender --nokbd --min-clients $alive --interface \
eth0 --pipe "tar cfp - ./"

                sleep 15
                clear
                echo
                echo
                echo "Transfer finished,"
                echo
                echo "           ***YOU SHOULD WAIT UNTIL"
               echo "ALL CLIENT(S) HAVE COMPLETED THERE POST-CONFIG***."
                echo
                echo "Press return when done."
                echo

### THIS IS WHERE READ FAIL!
                read junk
###
                echo "Returning to main menu."
                unset host2ghost host_count
                sleep 5
                ;;


Here is the relevant portion of an strace debug output :


write(1, "Transfer finished,\n", 19)    = 19
write(1, "\n", 1)                       = 1
write(1, "           ***YOU SHOULD WAIT UN"..., 36) = 36
write(1, "ALL CLIENT(S) HAVE COMPLETED THE"..., 51) = 51
write(1, "\n", 1)                       = 1
write(1, "Press return when done.\n", 24) = 24
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon
echo ...}) = 0
read(0, 0x80e0a60, 128)                 = -1 EAGAIN (Resource
temporarily unavailable)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3


does'nt seem to tell that much...


Once again, thanks a lot!!!

Tony




More information about the Udpcast mailing list