You can easily combine 1) and 2). Running something like this on the client-polling server would do it:
Wow, I should have known the hobbit client would have been this clean already ;)
Real world:
[hobbit at myhost bin]# cat hobbitremote.sh #!/bin/sh -x
CLIENT="myclient" CLIENTOS="aix"
echo "client $CLIENT.$CLIENTOS" >/tmp/msg-$CLIENT.txt ssh bb@$CLIENT < /usr/local/hobbit/client/bin/hobbitclient-$CLIENTOS.sh
/tmp/msg-$CLIENT.txt #$BB $BBDISP "@" </tmp/msg-$CLIENT.txt
[hobbit at dev1 bin]# time ./hobbitremote.sh CLIENT=aixserver CLIENTOS=aix
- echo client aixserver.aix
- ssh bb at aixserver Pseudo-terminal will not be allocated because stdin is not a terminal. ksh[39]: top: not found.
real 0m7.525s user 0m0.120s sys 0m0.010s
Seven seconds. But I am pretty sure 5 of that is the ps of the machine.
Needless to say, this would need to be parallel processed to handle scaling, but its awesome how easy the proof of concept was.
-- Scott Walters -PacketPusher