105 lines
1.9 KiB
Bash
Executable File
105 lines
1.9 KiB
Bash
Executable File
#!/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
|
|
|