Raspberry Amok Installation

Aus Agilos Wiki
Zur Navigation springen Zur Suche springen


Aufruf

install-wvdial-amok.sh USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS

Parameter

Feld Beschreibung
SCRIPT-PATH Pfad in dem die Scripte abgelegt werden sollen
USERNAME Name des Benutzers der später die GSM-Verbindung nutzen soll
GROUPNAME Name der Gruppe die später die GSM-Verbindung nutzen soll
SIM-PIN Pin der Sim-Karte für die GSM-Verbindung
HTTP-URL http-Adresse für die Alarmierung
HTTP-USER Benutzername für die http-Alarmierung
HTTP-PASS Passwort für die http-Alarmierung

Skript

<source lang="bash">

  1. !/bin/bash


  1. CONFIG

APT_SOURCES="/etc/apt/sources.list"

WVDIAL_CONF="/etc/wvdial.conf" USB_DEV="/dev/ttyUSB0" USB_BAUD="9600" GSM_DST="internet.t-d1.de" GSM_USER="internet" GSM_PASS="t-d1" GSM_NUMBER="*99#"

PPPD="/usr/sbin/pppd" PAP_SECRETS="/etc/ppp/pap-secrets" CHAP_SECRETS="/etc/ppp/chap-secrets"

AMOK_SCRIPT="amok.sh" INVOKE_SCRIPT="invoke.sh"


  1. CHECK PARAMETERS

USAGE="USAGE: $0 SCRIPT-PATH USERNAME GROUPNAME SIM-PIN HTTP-URL HTTP-USER HTTP-PASS" if [ $UID != 0 ]; then echo "only root can execute this script!" exit 1 fi


SCRIPT_PATH=$1 if [ "$SCRIPT_PATH" = "" ]; then echo "missing SCRIPT_PATH" echo $USAGE exit 10 fi

USERNAME=$2 if [ "$USERNAME" = "" ]; then echo "missing USERNAME" echo $USAGE exit 11 fi

GROUPNAME=$3 if [ "$GROUPNAME" = "" ]; then echo "missing GROUPNAME" echo $USAGE exit 12 fi

PIN=$4 if [ "$PIN" = "" ]; then echo "missing SIM-PIN" echo $USAGE exit 13 fi

HTTP=$5 if [ "$HTTP" = "" ]; then echo "missing HTTP" echo $USAGE exit 14 fi

HTTP_USER=$6 if [ "$HTTP_USER" = "" ]; then echo "missing HTTP-USER" echo $USAGE exit 15 fi

HTTP_PASS=$7 if [ "$HTTP_PASS" = "" ]; then echo "missing HTTP-PASS" echo $USAGE exit 16 fi

INVOKE_SCRIPT=$SCRIPT_PATH/$INVOKE_SCRIPT AMOK_SCRIPT=$SCRIPT_PATH/$AMOK_SCRIPT


  1. ADD REPOSITORIES

REPOS="deb http://security.debian.org testing/updates main contrib non-free"

echo "$REPOS" | while read REPO; do RESULT=`grep "$REPO" $APT_SOURCES 2> /dev/null` if [ "$RESULT" != "$REPO" ]; then echo "adding '$REPO' to $APT_SOURCES" echo -e "\n$REPO" >> $APT_SOURCES else echo "'$REPO' already in $APT_SOURCES" fi done


  1. INSTALL PACKAGES

PACKAGES="wvdial python-dev python-rpi.gpio curl screen" INSTALL=""

for PACKAGE in $PACKAGES; do if ! dpkg --get-selections $PACKAGE > /dev/null 2>&1; then echo "'$PACKAGE' is not installed" INSTALL="$INSTALL $PACKAGE" else echo "'$PACKAGE' is already installed" fi done

if [ "$INSTALL" != "" ]; then echo "installing$INSTALL" apt-get update apt-get install -y $INSTALL else echo "nothing new to install" fi


  1. WRITE CONFIG

CONFIG=' [Dialer Defaults] Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem ISDN = 0 Init1 = ATZ Modem = '$USB_DEV' Baud = '$USB_BAUD'

[Dialer pin] Init3 = AT+CPIN='$PIN'

[Dialer connect] Carrier Check = no Init4 = AT+CGDCONT=1,"IP","'$GSM_DST'" Stupid Mode = 1 Phone = '$GSM_NUMBER' Dialer Command = ATD Dial Attemps = 100 Username = '$GSM_USER' Password = '$GSM_PASS' '

echo -e "$CONFIG" > $WVDIAL_CONF chmod u=rw,go=r $WVDIAL_CONF echo "wrote '$WVDIAL_CONF'"


  1. CHANGE SOME PERMISSIONS TO BE ABLE TO EXECUTE AS NON-ROOT

adduser $USERNAME dip adduser $USERNAME dialout

echo "changing permissions of ppp-files" chmod o+x,g+s $PPPD chown $USERNAME:$GROUPNAME $PAP_SECRETS chown $USERNAME:$GROUPNAME $CHAP_SECRETS


  1. WRITE amok-script

SCRIPT='

  1. !/bin/bash

INVOKE="'$INVOKE_SCRIPT'"

while true do

  1. clear

echo -n "press key > " read -n 1 KEY echo -e "" $INVOKE $KEY done '

echo -e "$SCRIPT" > $AMOK_SCRIPT chown $USERNAME:$GROUPNAME $AMOK_SCRIPT chmod u=rwx,go= $AMOK_SCRIPT echo "wrote '$AMOK_SCRIPT'"


  1. WRITE invoke-script

SCRIPT='

  1. !/bin/bash


KEY=$1

if [ "$KEY" = "" ]; then echo "missing input-key" exit 1 fi


if [[ $KEY =~ ^[0-9]+$ ]]; then URL="'$HTTP'?user='$HTTP_USER'&pass='$HTTP_PASS'&key=$KEY" RESULT="" wvdial pin 2> /dev/null screen -dmS wvdial_screen wvdial connect 2> /dev/null

while true; do RESULT=`curl --connect-timeout 3 -s $URL` STATUS=`echo "$RESULT" | cut -d";" -f1` MESSAGE=`echo "$RESULT" | cut -d";" -f2` echo $MESSAGE case "$STATUS" in "ok") killall wvdial 2> /dev/null exit 0 ;; "error")

               killall wvdial 2> /dev/null

exit 99 ;; *) sleep 1 ;; esac done else

       echo "\"$KEY\" is no number!"
       exit 2

fi '

echo -e "$SCRIPT" > $INVOKE_SCRIPT chown $USERNAME:$GROUPNAME $INVOKE_SCRIPT chmod u=rwx,go= $INVOKE_SCRIPT echo "wrote '$INVOKE_SCRIPT'" </source>