321 lines
11 KiB
Bash
321 lines
11 KiB
Bash
#!/bin/bash
|
|
|
|
eingabecheck(){
|
|
if ! [[ "$1" =~ ^[a-zA-Z0-9\/\.\:\-]+$ ]]
|
|
then
|
|
echo ERROR: at "$2": "$1" has bad characters
|
|
exit 1;
|
|
fi
|
|
case "$3" in
|
|
bool)
|
|
if [[ "$1" != 'true' && "$1" != 'false' ]];
|
|
then
|
|
echo ERROR at "$2": "$1" must be true or false
|
|
exit 1
|
|
fi
|
|
;;
|
|
cloud)
|
|
if [[ "$1" != 'Azure' && "$1" != 'ICloud' ]];
|
|
then
|
|
echo ERROR at "$2": "$1" is not a supported Cloud
|
|
exit 1
|
|
fi
|
|
;;
|
|
port)
|
|
if ! [[ "$1" = [0-9]* ]];
|
|
then
|
|
echo ERROR at "$2": "$1" ist not a valid Port
|
|
exit 1
|
|
fi
|
|
;;
|
|
path)
|
|
if ! [[ "$1" =~ .?\/.*\/*.+ ]];
|
|
then
|
|
echo ERROR at "$2": "$1" is not a valid Path
|
|
exit 1
|
|
fi
|
|
;;
|
|
pem)
|
|
if ! [[ "$1" =~ .*\/.*.pem ]];
|
|
then
|
|
echo ERROR at "$2": "$1" needs to be a .pem file
|
|
exit 1
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
flagarray=("Enabled" "CloudType" "Host" "Port" "ClientId" "User" "Password" "TransportProtocol" "KeepAliveInterval" "CleanSession"
|
|
"AuthenticationMethod" "UseTLS" "CaFile" "CertFile" "KeyFile" "ProxyType" "HttpProxyHost" "HttpProxyPort" "HttpProxyUser"
|
|
"HttpProxyPassword" "LastWillEnabled" "LastWillTopic" "LastWillPayload" "LastWillQoS" "LastWillRetain" "MessagingProtocol"
|
|
"MessageProperty" "Compression" "StandardCommandsEnabled" "SendDeviceInfo" "SendDeviceStatus" "TelemetryStopped" "CacheMode")
|
|
|
|
length=${#flagarray[@]}
|
|
|
|
for(( i=0; i < ${length}; i++)); do
|
|
|
|
counter=$(grep -n -w -m 1 "${flagarray[i]}" /etc/dataagent/dataagent.config | cut -f1 -d:)
|
|
counter=$(grep -n -w -m 1 "${flagarray[i]}" /etc/dataagent/dataagent.config | cut -f1 -d:)
|
|
erase=1
|
|
|
|
if [[ $# -gt 0 ]];
|
|
then
|
|
|
|
checkflagarray=$(echo "${flagarray[i]}" | sed "s:.*:\L&:")
|
|
checkflagoption=$(echo "$1" | sed "s:-::")
|
|
|
|
if [[ "$checkflagarray" = "$checkflagoption" ]];
|
|
then
|
|
erase=0
|
|
case "$1" in
|
|
-enabled)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-cloudtype)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" cloud
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-host)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-port)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" port
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-clientid)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-user)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-password)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-transportprotocol)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-keepaliveinterval)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-cleansession)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-authenticationmethod)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-usetls)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-cafile)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" path
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-certfile)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" path
|
|
eingabecheck "$1" "${flagarray[i]}" pem
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-keyfile)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" path
|
|
eingabecheck "$1" "${flagarray[i]}" pem
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-proxytype)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-httpproxyhost)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-httpproxyport)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" port
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-httpproxyuser)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-httpproxypassword)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-lastwillenabled)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-lastwilltopic)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-lastwillpayload)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-lastwillqos)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-lastwillretain)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-messagingprotocol)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-messageproperty)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-compression)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-standardcommandsenabled)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-senddeviceinfo)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-senddevicestatus)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-telemetrystopped)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}" bool
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
-cachemode)
|
|
shift
|
|
eingabecheck "$1" "${flagarray[i]}"
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
|
|
shift
|
|
;;
|
|
esac
|
|
|
|
if [[ $i == $length-1 ]] && [[ "$checkflagarray" = "$checkflagoption" ]];
|
|
then
|
|
echo ERROR : FLAG: "$1" NOT FOUND
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [[ $erase = 1 ]];
|
|
then
|
|
sed -i "$counter s/:\s\".*\"/: \"\"/" /etc/dataagent/dataagent.config
|
|
sed -i "$counter s/:\s\".*\"/: \"\"/" /etc/dataagent/dataagent.config
|
|
fi
|
|
unset flagarray[i]
|
|
done
|