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