Add doall.sh configuration helper

This commit is contained in:
Pim van Pelt
2019-03-31 13:13:59 +02:00
parent 51ca1de390
commit fbd3ba98d3
3 changed files with 143 additions and 0 deletions

104
deploy/doall.sh Executable file
View File

@ -0,0 +1,104 @@
#!/bin/bash
usage() {
[ -n "$1" ] && {
echo $1
echo
}
echo "Usage:"
echo "$0 [-csv <file>] [-f] [-q] get|set"
echo "Using Input CSV file given by -csv argument, either get all channel info, or set all channel info."
echo "If not given, the file config.csv in the working directory is chosen"
echo "Setting -f (force) will call the RPCs, without it, only print what would be sent"
echo "Setting -q (quiet) will only output the CSV and errors"
echo ""
exit -1
}
log() {
[ $QUIET -eq 1 ] && return
echo "# $*"
}
doget() {
echo "# Generated on $(date)"
echo "# Device,IPv4,Chan,Name,TimeSpec(UTC)"
while IFS=, read -r dev ip chan name timespec
do
[ "${dev:0:1}" == "#" ] && continue
cmd="mos --port ws://$ip/rpc call TimeSpec.Get '{\"idx\": $chan }'"
log "$cmd"
SPEC=$(eval $cmd | awk '/spec/ { print $2 }' | sed -e 's,",,g')
echo "$dev,$ip,$chan,$name,$SPEC"
done < $CONFIG
}
doset() {
# Device,IPv4,Chan,Name,TimeSpec(UTC)
while IFS=, read -r dev ip chan name timespec
do
[ "${dev:0:1}" == "#" ] && continue
cmd="mos --port ws://$ip/rpc call TimeSpec.Clear '{\"idx\": $chan }'"
log "$cmd"
[ $FORCE -ne 0 ] && {
eval $cmd
}
cmd="mos --port ws://$ip/rpc call TimeSpec.Add '{\"idx\": $chan, \"spec\": \"$timespec\" }'"
log "$cmd"
[ $FORCE -ne 0 ] && {
eval $cmd
}
done < $CONFIG
}
VERB="get"
CONFIG="config.csv"
FORCE=0
QUIET=0
while [ $# -ne 0 ]; do
case $1 in
-f)
FORCE=1
;;
-q)
QUIET=1
;;
-csv)
shift
CONFIG=$1
;;
get)
VERB="get"
;;
set)
VERB="set"
;;
*)
usage "Unknown commandline flag '$1'"
;;
esac
shift
done
[ ! -r $CONFIG ] && {
echo "Cannot open file '$CONFIG'"
exit -2
}
case $VERB in
get)
doget
;;
set)
doset
;;
*)
echo "Unknown verb: $VERB"
exit -3;
;;
esac