adding hardware scripts to the main repo

This commit is contained in:
YamiDoesDev 2023-04-10 21:34:05 +02:00
parent 6db819211d
commit d79eb74ca9
4 changed files with 390 additions and 0 deletions

View File

@ -0,0 +1,28 @@
#! /bin/bash
## path: /home/script/auto_cert.sh
## Fuer die manuelle Eingabe eines Geraetenamen
# echo "hallo , geben Sie ein Hostnamen fuer ihr Geraet ein"
# read CN
## Erzeugung von rsa key files
CN=$1
openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -subj "/CN=${CN}"
## Ermittlung des primary fingerprint und uebermittlung per bluetooth
Fingerprint=$(openssl x509 -noout -fingerprint -sha256 -in cert.pem | sed -e "s|:||g" | sed -e "s|SHA256||g" | sed$
echo $Fingerprint
echo "fingerprint ${Fingerprint}" > /dev/service
## Anpassung der key files und verschiebung in das zugehoerige directory
chmod 600 key.pem
chmod 600 cert.pem
Pathssl=/etc/ssl
mv key.pem $Pathssl/private
mv cert.pem $Pathssl/certs
Pathcert=$Pathssl/certs/cert.pem
Pathkey=$Pathssl/private/key.pem
## Configures the device for communication with the cloud
/home/script/auto_conf.sh -enabled true -clientid ${CN} -host mm-hfu-semesterprojekt.azure-devices.net -usetls fal$

320
scripts-pfc200/auto_conf.sh Normal file
View File

@ -0,0 +1,320 @@
#!/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

View File

@ -0,0 +1,7 @@
#!/bin/bash
## path: /home/script/auto_read.sh
## configures tty and listens for bluetooth input to pass it on
stty -F /dev/service 19200 parenb -parodd -cstopb cs8
cat /dev/service | xargs -n 1 /home/script/auto_cert.sh

View File

@ -0,0 +1,35 @@
#!/bin/bash
#
# chkconfig: 2345 92 65
### BEGIN INIT INFO
# Provides: initBluetoothListener
# Required-Start: $local_fs $all
# Required-Stop: $syslog
# Default-Start: 2345
# Default-Stop:
# Short-Description: Start a bluetooth listener
# Description: Start a listening section for bluetooth, so incoming commands can behandeled
### END INIT INFO
## path symlink: /etc/rc.d/S99_init_bluetooth_listener
## path: /etc/init.d/initBluetoothListener
case $1 in
start)
echo "auto_read.sh wird gestartet"
# Starte Programm
/home/script/auto_read.sh
;;
stop)
echo "auto_read.sh wird beendet"
# Beende Programm
killall auto_read.sh
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0