Raspberry Amok Installation: Unterschied zwischen den Versionen
| Zeile 3: | Zeile 3: | ||
===Aufruf=== | ===Aufruf=== | ||
/path/to/script USERNAME GROUPNAME SIM-PIN HTTP HTTP-USER HTTP-PASS | |||
===Parameter=== | ===Parameter=== | ||
Version vom 30. Januar 2013, 08:02 Uhr
Aufruf
/path/to/script 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">
- !/bin/bash
- 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"
- 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
- 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
- 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
- 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'"
- 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
- WRITE amok-script
SCRIPT='
- !/bin/bash
INVOKE="'$INVOKE_SCRIPT'"
while true do
- 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'"
- WRITE invoke-script
SCRIPT='
- !/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>