#!/usr/bin/perl -w
##############################################################################
## FILE: detectvnc.pl
## DESC: display information about VNC server instances
## VERS: 01
## DATE: 2009-05-13
## AUTH: pdw@thesoftwaremaster.com
##############################################################################
## USAGE NOTES:
##
## This is a script to find out the connection port number and screen
## geometry of any VNC server instances currently running on a host.
##
## This functionality is most useful to a user who needs to know what VNC
## server instance(s) is(are) running, and on what port(s) - E.G. at logon
## (to a shell) time when a vncserver has been left running.
##
## For convenience, the geometry of the X interface, the PID of Xvnc (the
## actual X server invoked by vncserver), and such other info as we can
## glean from the process listing on the host.
##
## Note that this script only returns information about VNC instances
## running under the UID of the user who runs the script. The value of
## the environment variable $USER is used to filter the process listing.
## The user's $UID value is displayed, but is not used.
##
## This program is designed to be run on a remote, ssh-accessible host
## computer during the login and user account initialization process.
##
## EXAMPLE:
##
## I place this script in the .bash_login shell script that runs at user
## login.
##
##
## _TODO_: there is no buglist, yet, but there are some things need done to
## this script right to begin with (i.e. the functionality is
## marginal, and will almost certainly "break" the first time someone
## tries to use it on some other platform or environment. First on
## the list of things to do must be: Fix the regular expression
## parsing which finds the data in the process listing. As the code
## is now, these regex statements will break e.g. if the Xvnc command
## line doesn't look like it expects. 2nd on the list has to be the
## addtion of command line parameters to modify the output of the
## script. :_TODO_
##
#############################################################################
## REVISION HISTORY:
##
## 02: 2014-06-13 pdw@gmail.com
## 01: 2009-05-13 pdw
## Initial version
##
#############################################################################
##
## 8258 pts/3 S 5:22 Xtightvnc :12 -desktop X
## -httpd /usr/share/tightvnc-java
## -auth /home/mint/.Xauthority
## -geometry 800x600 -depth 24 -rfbwait 120000
## -rfbauth /home/mint/.vnc/passwd
## -rfbport 5912
## -fp /usr/share/fonts/X11/misc/,
## /usr/share/fonts/X11/Type1/,
## /usr/share/fonts/X11/75dpi/,
## /usr/share/fonts/X11/100dpi/
## -co /etc/X11/rgb
##
## Load up some environmental info...
$curruid = `echo \$UID`;
$curruser = `echo \$USER`;
@processes = `ps x -u \$USER`;
chomp($curruid);
chomp($curruser);
## @displays gets the data about whatever VNC displays are running
@displays = ();
while ($_ = shift(@processes)) {
my $d = {};
my $found = 0;
chomp;
next unless ($_);
next unless (/^\s*(\d+).+Xtightvnc\s*(\:\d+)/)
&& ( $display = $2, $vncpid = $1 );
# get desktop
m/-desktop(.+)-httpd/
&& ($desktop = $1);
m/-geometry\s+(\d+x\d+)/
&& ( $geometry = $1 );
m/-depth\s+(\d+)/
&& ( $depth = $1 );
$d = {
'Display' => $display,
'VNC PID' => $vncpid,
'Desktop' => $desktop,
'Geometry' => $geometry,
'Depth' => $depth,
};
push(@displays, $d);
}
## Display what we found out
print "VNC server info for USER \'$curruser\':\n";
if (scalar(@displays)) {
foreach my $disp (@displays) {
foreach my $k (keys(%$disp))
{
print" $k: \t".$disp->{$k}."\n";
}
}
} else {
print "
VNC server not found in process listing.
"
}
Technology, Hardware, Software, Systems, Raspberry Pi, Raspberian, Linux, Video, GPU, framebuffer, API, Emacs, IP Networking Visual Computing, video tracking, Linux system administration, Shell scripting, Natural Language Programming, audio signal control
detectvnc.pl
Subscribe to:
Comments (Atom)