Raspberry Amok Installation

Aus Agilos Wiki
Zur Navigation springen Zur Suche springen


<source lang="bash">

  1. !/bin/bash


  1. CONFIG

REPOSITORY="deb http://security.debian.org testing/updates main contrib non-free" 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" 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


  1. INSTALL PACKAGES

INSTALL=""

PACKAGE="wvdial" if ! dpkg --get-selections $PACKAGE > /dev/null 2>&1; then echo "'$PACKAGE' is not installed" INSTALL="$INSTALL $PACKAGE"

RESULT=`grep "$REPOSITORY" $APT_SOURCES 2> /dev/null` if [ "$RESULT" != "$REPOSITORY" ]; then echo "adding repository to $APT_SOURCES" echo -e "\n$REPOSITORY" >> $APT_SOURCES else echo "repository already in $APT_SOURCES" fi else echo "'$PACKAGE' is already installed" fi


PACKAGE="python-dev" 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


PACKAGE="python-rpi.gpio" 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


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('pwd &')" SCRIPT="${SCRIPT}\n\tif ( GPIO.input(24) == False ):" SCRIPT="${SCRIPT}\n\t\tos.system('pwd &')" SCRIPT="${SCRIPT}\n\tif ( GPIO.input(25)== False ):" SCRIPT="${SCRIPT}\n\t\tos.system('pwd &')" SCRIPT="${SCRIPT}\n\tsleep(1);"

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