How to tell if someone is connected via vnc

Henning Larsen hennlar at start.no
Thu Jan 31 20:07:45 UTC 2008


Thank you Olivier :)

On Thu, 2008-01-31 at 20:12 +0100, Olivier Robert wrote:
> Hi,
> 
> 1. "How can I determine what the user responds, is there errorlevels
> or anything like that?"
> 
> You can check for the exit status of the xmessage command
> 
> 2. "What is the reason for doing ' > /dev/null 2>&1'"
> 
> It redirects any standard out and standard error to oblivion
> 
> Let's say you have a vnc session on port 5902. You want a script that
> checks if there's a session and display a message to the user. And you
> want to know if the user read the message. Here's what you could do.
> (you'll have to adapt and add a loop in there if you have several vnc
> sessions)
> 
> Edit the linux user's ~/.vnc/xstartup and add an "xhost +" in it.
> Otherwise you will not be able to display the message.
> 
> Use a script similar to this one: (of course, you will adapt and
> enhance)
> 
> #!/usr/bin/env bash
> 
> netstat -tape | grep ESTABLISHED | grep Xvnc | awk '{print $4}' | awk
> -F ":" '{print $2}' > log-ports
> 
> for user in `cat log-ports`
> do
>         case $user in
>                 5902)
>                         export DISPLAY=:2.0; xmessage -buttons "I
> understand":10 -center -timeout 60 -file testmsg > /dev/null 2>&1
>                         [ $? -eq 10 ] \
>                             && echo "$user acknowledged!" \
>                             || echo "No answer from $user!"
>                         ;;
>         esac
> 
> done
> 
> The user connected to 5902 will get a windowed message with a "I
> understand" button. If he clicks on it, you'll know. If he doesn't,
> it'll time out after 60 seconds and return an exit status of 0 (zero):
> you'll know too .
> 
> Hope it helps,
> Olivier
> 

Thank you very much, I learned so much from your answer so that I will
be busy programming scripts for a long time.

Henning Larsen






More information about the fedora-list mailing list