#!/usr/bin/perl
#
########################################
#
# vineyard - matches users with VNC
#            (vino) display numbers
#
# Written: Naaman Campbell
#          12 December 2005
#
########################################

print "\n";
print "      ===================\n";
print "        REMOTE DESKTOPS\n";
print "      ===================\n\n";
print "  =============================\n";
print "  | username | display number |\n";
print "  =============================\n";

foreach $line (`netstat --ip -ap | grep vino`) {
  # retrieve port number and process id of each remote desktop
  $line =~ /^.*\:(\d+).*\ (\d+)/;
  $vncport = $1;
  $pid = $2;
  # strip leading "59" from port number to obtain display number
  $vncport =~ /59(..)/;
  $display_num = $1;
  # retrieve owner of current remote desktop process
  $process_line = `ps -ef | grep $pid | grep -v grep`;
  $process_line =~ /^(\w+)/;
  $user = $1;
  # print users and display numbers
  print "  | $user |\t\t  $display_num |\n";
}
 
print "  =============================\n\n";
