#!/bin/csh -f #+ #OSIRIS library of scripts # #NAME # osirisStartGuis -- Start the OSIRIS observing GUIs # #SYNOPSIS # osirisStartGuis [-t #] [-m] etc... # #DESCRIPTION # Called via a pulldown or from osirisSetupNight to start GUIs # #OPTIONS # -t # # ID number to attach to all script generated errors, warnings, and # questions that are passed to the OGS. The ID number is separated # from the rest of the message with a ";". # # -m # simulate calls to RPC servers. during simulated calls, the # command is echoed (instead of being executed). # # others? # #EXAMPLES # osirisStartGuis # #ENVIRONMENT VARIABLES # list of environment variables used # #FILES # list of files used # #SERVERS & KEYWORDS # list of the servers and keywords used, for example: # # service = osiris # keywords: sfilter/ifilter, sscale # #SCRIPTS CALLED # list of the scripts called by this script, for example: # # help, syncheck # #EXIT STATUS # 0 - normal exit, no error # 1 - script aborted by an interrupt # 2 - syncheck error # 3 - error parsing command line input # other errors... # #SEE ALSO # ??? #- # # Modification History: # 20041124 - MB: Initial version created # # Boiler plate for "-h" support for command autohelp. if ("$1" == "-h") then help $0 | more exit $status endif # Boilerplate for syncheck. # Note that the boiler plate should be transparent for all usages, # but to make correct use of syncheck you will need to specify the # correct pattern. set noglob set CheckStatus = `syncheck -command $0 $* -pattern` unset noglob if ("$CheckStatus" != "OK") then help $0 | more exit 2 endif # End of help/syncheck boiler plate. # Set up to trap interrupts (Ctrl-C, etc.) onintr abort # Set default variable values set cmdpre = "" set cmdsuf = "" set idnum = 0 # Check for flags set noglob while ($#argv != 0) ##echo "${0} ${mode}: Checking ${1}..." switch ($1) case -t: set CheckStatus = `syncheck -command $1 $2 -pattern int` if ("$CheckStatus" == "OK") then set idnum = $2 shift else echo "${0} ${mode}: Invalid script ID number specified <${2}> - using ${idnum}." endif unset Checkstatus breaksw case -m: set sim set cmdpre = "echo ${0}: sim:" set cmdsuf = "-m" breaksw default: echo "${0}: Invalid command line flag $1 specified." echo "${0}: Usage: $0 [-t #] [-m]" # set the error code for an error with command line input exit 3 breaksw endsw shift end unset noglob set sleep_between_guis = 3 set unavail = "" set logdir = "~/.vnc" #set control_string = "Control" set control_string = "control0" #set drp_string = "DRP" set drp_string = "control1" set current_disp = `printenv DISPLAY` set vnc_comp = svncserver2 set statcmd = "kvncstatus -n" set portcmd = "kvncstatus -q" # confirm start guis and orp # jlyke 2006 sep 07 take out IDL stuff as I can't get it to work :( #echo "Do you want to start the guis and IDL? [Y/N]:" echo "Do you want to start the guis (IDL must be started from cmd line) [Y/N]:" set confirm=$< sleep ${sleep_between_guis} if (${confirm} == "Y" || ${confirm} == "y") then # set display num for guis set gui_display=$current_disp set ql_display=0 # determine displays to use foreach disp (control drp) set skip = 0 set vnc_stat = 0 # set display-specific params switch ($disp) case control: set string = $control_string set guis = (oopgui odec osgui otgui) breaksw case drp: set string = $drp_string set guis = (idl oorgui) set guis = (oorgui) breaksw endsw ssh ${vnc_comp} ${statcmd} ${string} if ($status == 0 ) then set port = `ssh ${vnc_comp} ${portcmd} ${string}` set gui_display = ${vnc_comp}${port} else echo "\aCannot start GUIs--there is no VNC server running as ${USER}." exit 1 endif # start guis foreach gui ($guis) set gui_count = `ct | grep ${USER} | grep -ic ${gui}` if ( $gui_count == 0 ) then osiris start ${gui} -D ${gui_display} & sleep ${sleep_between_guis} # jlyke remove IDL stuff...not working...must run from cmd line # if ( $gui == "idl" ) then # setenv DISPLAY ${gui_display} # ssh osirisdrp xterm -e osiris start ${gui} & # sleep ${sleep_between_guis} # setenv DISPLAY ${current_disp} # else # osiris start ${gui} -D ${gui_display} & # sleep ${sleep_between_guis} # endif else echo "\a${USER} is already running an instance of ${gui}--skipping." endif end end # wait for guis to initialize sleep ${sleep_between_guis} endif goto done abort: # Block of code to handle interrupts. exit 1 done: # is there anything that needs to go here? exit