Add doall.sh configuration helper
This commit is contained in:
104
deploy/doall.sh
Executable file
104
deploy/doall.sh
Executable 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
|
||||
|
Reference in New Issue
Block a user