Posted to tcl by zmoment at Wed May 10 18:29:26 GMT 2023view raw
- #!/bin/sh
- # the next line restarts using tclsh \
- exec tclsh "$0" ${1+"$@"}
- proc receive {fd host} {
- if {[eof $fd]} {
- chan configure $fd -blocking 1
- if {[catch {close $fd} err info]} {
- puts "$host :::: [dict get $info -errorcode]"
- }
- incr ::pipe_exit
- } elseif {[gets $fd line] >= 0} {
- #puts "$host: $line"
- }
- }
- set pipe_exit 0
- set hostnames [list devuan alpine 192.168.1.253]
- foreach host $hostnames {
- set pipe [open |[list ping -W 3 -c 1 $host]]
- chan configure $pipe -blocking 0
- chan event $pipe readable [list receive $pipe $host]
- }
- while {$pipe_exit < [llength $hostnames]} {
- vwait pipe_exit
- }