[software and hardware technology originating from or otherwise pertinent to planet earth]
I needed something to tell me what VNC server (vncserver()) instances were running, and on which DISPLAY ports, and with what resolution(s) (geometry), so I wrote one. Here is the HTMLized Perl source code:
#!/usr/bin/perl -w ###################################################################### ## FILE: findvncport.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: ## ## 01: 2009-05-13 pdw ## Initial version ## ############################################################################# ## ## 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+).+Xvnc\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. "; }
Labels: bash, linux, perl, shebang, shell, source, tightvnc, vnc, x, xorg.conf
#
# X-server configuration file.
#
# Place this file at /etc/X11/xorg.conf and restart the X server
# in order to start using the provided configuration.
#
# This is the xorg.conf file that fixes the X-server config
# problems on the hp pavilion zd7000 laptop running OpenSuSE 11.0
#
# The source of this file is/was:
# http://www.ccs.neu.edu/home/jpatota/linux/knoppix/xorg.conf
#
#
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
# PS/2 Mouse not detected
# Serial Mouse not detected
InputDevice "USB Mouse" "CorePointer"
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
EndSection
Section "Files"
RgbPath "/usr/share/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc:unscaled"
FontPath "/usr/share/fonts/X11/75dpi:unscaled"
FontPath "/usr/share/fonts/X11/100dpi:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/Speedo"
FontPath "/usr/share/fonts/X11/PEX"
# Additional fonts: Locale, Gimp, TTF...
FontPath "/usr/share/fonts/X11/cyrillic"
# FontPath "/usr/share/fonts/X11/latin2/75dpi"
# FontPath "/usr/share/fonts/X11/latin2/100dpi"
# True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig!
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/latex-ttf-fonts"
EndSection
Section "Module"
# Comments: see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=346408
Load "dbe" # Double Buffering Extension, very important.
Load "dri" # This shouldn't be available choice if user has selected driver vga, vesa or nv.
Load "glx" # GLX Extension.
Load "freetype" # Freetype fonts.
Load "type1" # Type 1 fonts
Load "record" # Developer extension, usually not needed
# Load "extmod" # This is okay, but if you look into "man xorg.conf" you'll find option NOT to include DGA extension with extmod, and for a good reason.. DGA causes instability as it access videoram without consulting X about it.
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
# Load "speedo" # Speedo fonts, this module doesn't exist in Xorg 7.0.17
# The following are deprecated/unstable/unneeded in Xorg 7.0
# Load "ddc" # ddc probing of monitor, this should be never present, as it gets automatically loaded.
# Load "GLcore" # This should be never present, as it gets automatically loaded.
# Load "bitmap" # Should be never present, as it gets automatically loaded. This is a font module, and loading it in xorg.conf makes X try to load it twice.
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Serial Mouse"
Driver "mouse"
Option "Protocol" "Microsoft"
Option "Device" "/dev/ttyS0"
Option "Emulate3Buttons" "true"
Option "Emulate3Timeout" "70"
Option "SendCoreEvents" "true"
EndSection
Section "InputDevice"
Identifier "PS/2 Mouse"
Driver "mouse"
Option "Protocol" "auto"
Option "ZAxisMapping" "4 5"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "true"
Option "Emulate3Timeout" "70"
Option "SendCoreEvents" "true"
EndSection
Section "InputDevice"
Identifier "USB Mouse"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
# Auto-generated by KNOPPIX mkxf86config
Section "Monitor"
Identifier "Monitor0"
Option "DPMS" "true"
HorizSync 30 - 64
VertRefresh 50 - 100
Modeline "1440x900" 97.54 1440 1472 1840 1872 900 919 927 946
EndSection
Section "Device"
### Available Driver options are:-
# sw_cursor is needed for some ati and radeon cards
#Option "sw_cursor"
#Option "hw_cursor"
#Option "NoAccel"
#Option "ShowCache"
#Option "ShadowFB"
#Option "UseFBDev"
#Option "Rotate"
Identifier "Card0"
# The following line is auto-generated by KNOPPIX mkxf86config
Driver "nv"
VendorName "All"
BoardName "All"
# BusID "PCI:1:0:0"
Option "MetaModes" "1440x900"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultColorDepth 16
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1440x900"
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
Labels: config, file, hp, linux, pavilion, x, xorg.conf, zd7000
2006/12 2007/01 2007/05 2007/06 2007/07 2007/08 2007/10 2008/01 2008/02 2008/03 2008/05 2008/11 2008/12 2009/01 2009/02 2009/03 2009/04 2009/05 2009/07 2009/09 2009/10 2009/11 2009/12 2010/01
Subscribe to Posts [Atom]