#!/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