#!/bin/bash SUBDIR= ThisDev=Dirigent RsyncDevices # Tohle tu asi musí zustat ... source Commons.sh SessionDate=`date '+%Y%m%d_%H%M'` function OpenSession() { mkdir -p $SHM; mkdir -p $SHM/Shots; mkdir -p $SHM0 echo `DataBaseQuerry "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;"` > $SHM/ShotNo $LogFunctionStart PingCheck LogIt $SessionDate mkdir -p $SHM/Control; cp *.* $SHM/Control/ RsyncDevices for Dev in $RASPs; do mkdir -p $SHM/Infrastructure/$Dev RASPCommand $Dev RASPsOpenSession sshfs golem@$Dev:$SHM/ $SHM/Infrastructure/$Dev/ done for Dev in $DASs; do mkdir -p $SHM/DASs/$Dev DASCommand $Dev DASsOpenSession done df|grep shm $LogFunctionEnd } function CloseSession() { $LogFunctionStart mkdir -p Sessions/$SessionDate for Dev in $RASPs; do fusermount -u $SHM/Infrastructure/$Dev/ RASPCommand $Dev RASPsCloseSession done for Dev in $DASs; do DASCommand $Dev DASsCloseSession done wait rsync -a $SHM/ Sessions/$SessionDate #Bude muset byt trochu vyse . rm -rf $SHM Broadcast KillAllGMs df|grep shm #LogIt "^C" } function Broadcast() { LogIt "********* Broadcasting `echo "$1" | tr a-z A-Z`" for Dev in $RASPs; do if [ `ssh golem@$Dev "source $Dev.sh;$@"|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi & done for Dev in $DASs; do if [ `source $Dev.sh;$@|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi & done wait LogIt "*********`echo "$1" | tr a-z A-Z` end" } function MakeDischarge() { ShotNo=$((`cat $SHM/ShotNo`+1));echo $ShotNo>$SHM/ShotNo rm -f $SHM0/ShotLogbook LogIt "################# Discharge #$ShotNo ##################" mkdir -p $SHM0; mkdir -p $SHM0/Control; cp *.* $SHM0/Control/ #PingCheck #Ping all the devices .. LogIt "Command Line: $COMMANDLINE" LogIt "Load average: `cat /proc/loadavg`" echo $ShotNo>$SHM/ShotNo; Broadcast CommonInitDischarge Broadcast PrepareDischarge $1 $2 $3 $WGpressure $PreionFlag Broadcast Arming sleep 2;Discharge Trigger;sleep 2 Broadcast PostDisch sleep 3 Broadcast PostDischargeFinals ./Web.sh -r CreateShotHomepage cp -r $SHM0 $SHM/Shots/$ShotNo cp -r $SHM0 /golem/database/operation/shots/$ShotNo echo "INSERT INTO shots_new (shot_no, timestamp, pre_comment) VALUES ($((`cat $SHM/ShotNo`+1)), NOW(), 'tuning the controll system');" | psql -U golem golem_database $LogFunctionEnd } function Emergency () { $LogFunctionPassing } function Null () { $LogFunctionPassing } function Final() { LogIt "Load average: `cat /proc/loadavg`" } TASK=$1 COMMANDLINE=`echo $@|sed 's/-r //g'` PAR1=$1 PAR2=$2 PAR3=$3 PAR4=$4 while [ $# -gt 0 ]; do if [[ $1 == *"--"* ]]; then v="${1/--/}" declare $v="$2" fi shift done case "$TASK" in "") # echo "Usage: $0 [-d|--discharge] [-v|--vacuum] [-t|--test] [-s|--shutdown]" RETVAL=1 ;; --discharge|-d) MakeDischarge $UBt $Ucd ;; --test|-t) #Init #Et "Init;Prepare 400 300" #PwSpPap 3H #PwSp UnPiRelayON 5 #Chamber RotPumpON #Bt ShCt_DIS;Bt PS_ENG;sleep 0.3;Bt PS_DIS;Bt ShCt_ENG #Et ShCt_DIS;Et PS_ENG;sleep 0.3;Et PS_DIS;Et ShCt_ENG Broadcast Arming ;; --shutdown|-s) ShutDown ;; --emergency|-e) Broadcast Emergency ;; --kill|-k) Broadcast KillAllGMs ;; --ping|-p) PingCheck ;; --close_session|-c) CloseSession ;; --raw_command|-r) $COMMANDLINE ;; --open_session|-o) OpenSession ;; --vacuum_on|-v) Chamber PumpingON ;; --logbook|-l) tail -f /dev/shm/golem/GlobalLogbook ;; --rsyncPUSH) RsyncDevices ;; --rsync) RsyncDeviceFromDirigent ;; --post) Broadcast PostDisch Broadcast PostDischargeFinals ;; --commit) cd $GWDirigentDir;git add .; git commit -am "$PAR1"; cd $OLDPWD ;; --help) echo "COMMIT: ./Dirigent.sh --commit \"Commit text\"" ;; esac