#!/bin/bash SUBDIR= ThisDev=Dirig source Commons.sh source Tools.sh ShotNo=`echo "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;" |$DataB` function Broadcast() { LogIt "*********`echo "$1" | tr a-z A-Z` start" # Rozdame ulohy for Dev in $INFRASTRDevs; do echo $Dev $Dev $@ done # Musime zkontrolovat splneni for Dev in $INFRASTRDevs; do while [ `cat $SHM/GlobalLogBook|grep $ShotNo|grep $Dev/$1|grep -E 'Ascending|Passing'|wc -l` -eq 0 ]; do echo Waiting for $Dev to be completed sleep 0.1; done done LogIt "*********`echo "$1" | tr a-z A-Z` end" } function Discharge() { InitDischarge LogIt "$DOWNTO ${FUNCNAME[0]}" Broadcast Init Broadcast Prepare $UBt $Ucd Broadcast Arming sleep 2;Trigger;sleep 2 Broadcast PostDisch sleep 2 Broadcast Final Final LogIt "$UPFROM ${FUNCNAME[0]}" } function Trigger () { LogIt "$DOWNTO ${FUNCNAME[0]}" LogIt "$UPFROM ${FUNCNAME[0]}" } function Emergency () { LogIt "$PASSING ${FUNCNAME[0]}" } function Null () { LogIt "$PASSING ${FUNCNAME[0]}" } #kill `ps -Af|grep golem|grep Dirigent.sh|awk '{print $2}'|xargs ps --ppid|awk '{print $1}'`;sleep 1;killall tail;psa function OpenSession() { #PingCheck rm -rf $SHM;mkdir -p $SHM/Dirig; LogIt "$DOWNTO ${FUNCNAME[0]}" date '+%d/%m/%y %H:%M:%S'>$SHM/DateTime;mkdir -p $SHM/Controll; cp *.* $SHM/Controll/ for Dev in Dirigent $INFRASTRDevs; do rsync --copy-links -e ssh $Dev.sh Tools.sh Commons.sh golem@$Dev: LogIt "Opening $Dev command stream.." echo "source $Dev.sh" > $SHM/Dirig/CommandsStreamTo$Dev echo "ShotNo=$ShotNo" >> $SHM/Dirig/CommandsStreamTo$Dev tail -f $SHM/Dirig/CommandsStreamTo$Dev|ssh -q golem@$Dev & ssh golem@$Dev "source $Dev.sh;OpenSessionAtDevice" & done wait LogIt "$UPFROM ${FUNCNAME[0]}" } function DirigentLogIt() { echo "$@"|tee -a $SHM/GlobalLogBook } function KillSession() { killall tail } function InitDischarge() { rm -rf $SHM0;mkdir -p $SHMdir; #PingCheck #Ping all the devices .. LogIt "$DOWNTO ${FUNCNAME[0]}" LogIt "Command Line: $COMMANDLINE" LogIt "Load average: `cat /proc/loadavg`" ShotNo=$((`echo "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;" |$DataB`+1)) echo $ShotNo>$SHM/ShotNo;$SHMtouch/$ShotNo; LogIt "Let's go for shot #"$ShotNo LogIt "$UPFROM ${FUNCNAME[0]}" } function Final() { LogIt "$DOWNTO ${FUNCNAME[0]}" 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) Discharge ;; --vacuum|-v) echo i ;; --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 ;; --ping|-p) PingCheck ;; --command|-c) Init $PAR2 $PAR3 $PAR4 ;; --raw_command|-r) $COMMANDLINE ;; --open_session|-o) OpenSession ;; esac