Raspberry Amok Installation: Unterschied zwischen den Versionen

Aus Agilos Wiki
Zur Navigation springen Zur Suche springen
Patrick (Diskussion | Beiträge)
Patrick (Diskussion | Beiträge)
Zeile 22: Zeile 22:
|}
|}


==Skript==
===Skript===
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash

Version vom 16. Januar 2013, 11:09 Uhr


Aufruf

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

Parameter

Feld Beschreibung
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 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

WVDIAL_CONF="/etc/wvdial.conf" APT_SOURCES="/etc/apt/sources.list" 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_PY="amok.py"


  1. CHECK PARAMETERS

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

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

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

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

HTTP=$4 if [ "$HTTP" = "" ]; then echo "missing HTTP" echo $USAGE exit 13 fi

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

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

HTTP="$HTTP?user=$HTTP_USER\&pass=$HTTP_PASS\&button="


  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" 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="" CONFIG="${CONFIG}\n[Dialer Defaults]" CONFIG="${CONFIG}\nInit2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" CONFIG="${CONFIG}\nModem Type = Analog Modem" CONFIG="${CONFIG}\nISDN = 0" CONFIG="${CONFIG}\nInit1 = ATZ" CONFIG="${CONFIG}\nModem = $USB_DEV" CONFIG="${CONFIG}\nBaud = $USB_BAUD" CONFIG="${CONFIG}\n" CONFIG="${CONFIG}\n[Dialer pin]" CONFIG="${CONFIG}\nInit3 = AT+CPIN=$PIN" CONFIG="${CONFIG}\n" CONFIG="${CONFIG}\n[Dialer connect]" CONFIG="${CONFIG}\nCarrier Check = no" CONFIG="${CONFIG}\nInit4 = AT+CGDCONT=1,\"IP\",\"$GSM_DST\"" CONFIG="${CONFIG}\nStupid Mode = 1" CONFIG="${CONFIG}\nPhone = $GSM_NUMBER" CONFIG="${CONFIG}\nDialer Command = ATD" CONFIG="${CONFIG}\nDial Attemps = 2" CONFIG="${CONFIG}\nUsername = $GSM_USER" CONFIG="${CONFIG}\nPassword = $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

cd `dirname $0` SCRIPT="" SCRIPT="${SCRIPT}\n#!/usr/bin/env python" SCRIPT="${SCRIPT}\n" SCRIPT="${SCRIPT}\nfrom time import sleep" SCRIPT="${SCRIPT}\nimport os" SCRIPT="${SCRIPT}\nimport RPi.GPIO as GPIO" SCRIPT="${SCRIPT}\n" SCRIPT="${SCRIPT}\nGPIO.setmode(GPIO.BCM)" SCRIPT="${SCRIPT}\nGPIO.setup(23, GPIO.IN)" SCRIPT="${SCRIPT}\nGPIO.setup(24, GPIO.IN)" SCRIPT="${SCRIPT}\nGPIO.setup(25, GPIO.IN)" SCRIPT="${SCRIPT}\n" SCRIPT="${SCRIPT}\nwhile True:" SCRIPT="${SCRIPT}\n\tif ( GPIO.input(23) == False ):" SCRIPT="${SCRIPT}\n\t\tos.system('curl ${HTTP}23 &')" SCRIPT="${SCRIPT}\n\tif ( GPIO.input(24) == False ):" SCRIPT="${SCRIPT}\n\t\tos.system('curl ${HTTP}24 &')" SCRIPT="${SCRIPT}\n\tif ( GPIO.input(25)== False ):" SCRIPT="${SCRIPT}\n\t\tos.system('curl ${HTTP}25 &')" SCRIPT="${SCRIPT}\n\tsleep(1);"

echo -e "$SCRIPT" > $AMOK_PY chmod u=rwx,go= $AMOK_PY echo "wrote '$AMOK_PY'" </source>