[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Infrarot: Infrarotverbindung konfigurieren] [:Bluetooth/Einrichtung: Bluetooth-Dienste einrichten] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [http://gammu.org Gammu] {en} ('''G'''NU '''A'''ll '''M'''obile '''M'''anagement '''U'''tilities) ist eine Bibliothek um Mobiltelefone (vornehmlich Nokia) anzusprechen. Es ist möglich über Bluetooth, Infrarot oder Kabel Verbindung zu einem Handy aufzunehmen und Daten zu bearbeiten. Fast alles kann editiert werden: Telefonbuch, SMS, Kalender, Aufgaben. Achtung: Mobiltelefone mit der Symbian 60 Series 3rd Edition werden von Gammu nicht unterstützt! Bei diesen Telefonen sollte besser auf die Software series60-remote zurückgegriffen werden, die diese Telefone unterstützt. = Installation = Gammu befindet sich in den offiziellen Ubuntu-Paketquellen und kann über die Paketverwaltung installiert [1] werden. {{{#!vorlage Paketinstallation gammu, universe }}} = Konfiguration = Vor der Konfiguration sollte man eine Verbindung mit dem Telefon vornehmen. Für [:Infrarot:] genügt das Aktivieren und Konfigurieren [2] der Infrarotverbindung im Handy und das Positionieren neben dem Infrarotanschluss am Rechner, [:Bluetooth:] muss ebenfalls aktiviert werden und das Handy gepaart werden [3], für eine Kabelverbindung muss dieses lediglich eingesteckt werden. Die versteckte Konfigurationsdatei heißt '''.gammurc''' und befindet sich im [:Homeverzeichnis:]. Man öffnet sie einfach in einem Texteditor.[4] Der Minimalaufbau der Konfigurationsdatei ist unten beschrieben. Den exakten Aufbau erklärt [http://www.gammu.org/wiki/index.php?title=Gammu:Setting_configuration_file Setting configuration file] {en} im Gammu Wiki. Hilfreich ist neben [http://www.gammu.org/wiki/index.php?title=Gammu:Connecting_to_phone Connecting to phone] {en} im Gammu Wiki auch die [http://cihar.com/gammu/phonedb/ Phone Database] {en} mit bekannten funktionierenden Konfigurationen. {{{ [gammu] port=Bluetooth-Addresse oder Pfad zum Geräteanschluss connection=Verbindungstyp model=auto (hier auto stehen lassen außer das Gerät wird nicht erkannt) name=beliebiger Name }}} = Benutzung = Man öffnet ein Terminal [5]. Um zu testen ob die Konfiguration funktioniert bietet sich folgender Befehl an: {{{#!vorlage Befehl gammu --identify }}} Gammu sollte sich verbinden und nach kurzer Zeit Information über das Handy anzeigen. == SMS versenden == Folgender [:Skripte/Basheinzeiler:Skript-Einzeiler] erlaubt das Versenden einer SMS durch direkten Aufruf im Terminal.[5] Der SMS-Text steht in "Anführungszeichen", ``--sendsms`` ist die Funktion zum SMS verschicken, ``TEXT`` ist ein Parameter für diese Funktion und ``0123456789`` ist die natürlich anzupassende Handy-Nummer des Empfängers. {{{#!vorlage Befehl echo "Hallo! Ich bin ein Gammu-Test." | gammu --sendsms TEXT 0123456789 }}} == SMS abrufen == Man öffnet ein Terminal [5]. Dann gibt man folgenden Befehl ein, um alle empfangenen SMS abzurufen: {{{#!vorlage Befehl gammu --getallsms }}} == Automatisierung == === Kalender -> Mobiltelefon === Mit folgendem [:Shell:]-Skript lässt ein Kalender von Computer auf das Handy übertragen. {{{#!code bash #!/bin/bash # Den Pfad zur Kalenderdatei im iCalendar-Format CALFILE=/home/Benutzer/Desktop/Privat.ics #Kalender und Aufgaben im Handy löschen, dann Kalenderdatei auf Gerät schreiben gammu --restore $CALFILE -yes }}} === SMS komfortabel über die Kommandozeile verschicken === Zwei hier vorgestellte Shell-Skripte sollen diesen Aufruf von Gammu etwas komfortabler gestalten. Das eine '''sendpersonalSMS.sh''' nimmt einfach einen Parameter der Form ``Name [069912346..]`` und den Inhalt der SMS in einem zweiten Parameter, schickt die SMS mit Gammu und speichert sie zum Archivieren in einer im Code definierten Textdatei ab. Das zweite Skript '''sendmassSMS.sh''' ist zum Versenden von einer SMS an viele Leute. In einer Text-Datei wird pro Zeile eine Telefonnummer wieder im Format ``Name [069912346..]`` angegeben und der Pfad zu dieser Datei wird als Parameter übergeben sowie der Inhalt der SMS. Wenn der zweite Parameter (Inhalt der SMS) weg fällt, dann fragt das Script mit dem Tool [:Zenity:] in einem Dialog nach dem SMS-Inhalt. Absätze kann man dort leider keine Eingeben, aber sehr wohl aus der Zwischenablage einfügen (dh. SMS vorher in einem Editor schreiben). ==== sendpersonalSMS.sh ==== {{{#!code bash #!/bin/bash # 2009-01-29 lumbricus # Script zum SMS-Versand mit Gammu # Syntax zum Aufruf ueber Aufruf mit Parameter --help # --- Parameter --- maxchars=600 # Maximale Laenge von SMS empfaenger=$1 # Pfad zur Datei mit den Nummern text=$2 # Text der per SMS versendet werden soll archivedatei='~/sent-with-gammu' # ------------------ # Bekannte Probleme: # - bei SMS mit mehr als $maxchars gibts vielleicht seltsame Effekte (abgeschnitten?) # - # Gib Hilfetext aus... if [ "$1" = '--help' ] || [ "$1" = "h" ] || [ "$1" = "help" ] then echo 'sendpersonalSMS v0.1 - 2009-01-29 PR sendpersonalSMS NUMMER [TEXT] NUMMER Emfpaenger-Nummer im Format: Name [0699123..] Achtung 0043699... geht nicht! es geht nur: +43699... oder 0699... TEXT Inhalt der SMS Wenn nicht angegeben, fragt ein Dialog nach dem Text. ' echo exit 0 fi # Wenn Parameter $nummer keine Telefonnummer ist... if ! (echo "$empfaenger"|egrep -q '\[[0-9+]+\]') then echo "Keine gueltige Telefonnummer uebergeben." echo "Mehr mit '--help'." echo exit 0 fi # Wenn Parameter 2 leer ist, , dh. kein Text zum verschicken, # frag nach dem Text... if [ -z "$text" ] then text=$(zenity --entry --title='Nachrichtentext eingeben' --text='Bitte Nachrichtentext eingeben:' --width=400) if [ -z "$text" ]; then echo 'Texteingabe und SMS-Versand abgebrochen.' echo exit fi fi echo "Versende die SMS, ${#text} Zeichen:" echo "$text" echo echo "Versende SMS an:" echo "$empfaenger" echo echo "Any key to continue or [Ctrl] + [C] to abort or '--help' for help." # Lies ein Zeichen ein... read -n 1 echo # Zum archivieren der SMS inklussive Ergebnis von gammu... #$(date +%F_%H.%M.%S) # SMS + Datum in Logfile schreiben... echo "[$(date '+%F %H:%M:%S')] -> $empfaenger" >> "$archivedatei" echo "$text" >> "$archivedatei" echo '------- Gammu-Result -------' >> "$archivedatei" nummer=$(echo "$empfaenger"|egrep -o '\[[0-9+]+\]'|egrep -o '[0-9+]+') # Verschicke die SMS... echo echo "$text"|gammu --sendsms TEXT $nummer -autolen $maxchars|tee -a "$archivedatei" echo '----------------------------' >> "$archivedatei" echo >> "$archivedatei" echo >> "$archivedatei" echo echo '...fertig!' }}} ==== sendmassSMS.sh ==== {{{#!code bash #!/bin/bash # 2009-01-29 lumbricus # Script zum Massensms-Versand mit Gammu # Syntax zum Aufruf ueber Aufruf mit Parameter --help # --- Parameter --- maxchars=600 # Maximale Laenge von SMS delay=1 # Verzoegerung zwischen 2 versendeten SMS list=$1 # Pfad zur Datei mit den Nummern text=$2 # Text der per SMS versendet werden soll # ------------------ # Bekannte Probleme: # - bei SMS mit mehr als $maxchars gibts vielleicht seltsame Effekte (abgeschnitten?) # - # Gib Hilfetext aus... if [ "$1" = '--help' ] || [ "$1" = "h" ] || [ "$1" = "help" ] then echo 'sendmassSMS v0.1 - 2009-01-29 PR sendmassSMS NUMMERLISTE [TEXT] NUMMERLISTE Textdatei mit Liste der Emfpaenger-Nummern. Pro Zeile eine Nummer im Format: Name oder so [1234...] Alles hinter einem "#" ist Kommentar. Achtung: 0043699... geht nicht! es geht nur: +43699... oder 0699... TEXT Inhalt der SMS Wenn nicht angegeben, fragt ein Dialog nach dem Text. ' echo exit 0 fi # Wenn Parameter 1 keine lesbare Datei ist... if [ ! -r "$1" ] then echo "Keine gueltige Nummerndatei uebergeben." echo "Der erste Parameter beim Aufruf des Scripts muss der Pfad zu einer" echo "Textdatei sein, die Empfaengernummern enthaelt. Mehr mit '--help'." echo exit 0 fi # Wenn Parameter 2 leer ist, , dh. kein Text zum verschicken, # frag nach dem Text... if [ -z "$text" ] then text=$(zenity --entry --title='Nachrichtentext eingeben' --text='Bitte Nachrichtentext eingeben:' --width=400) # fuer weiter Versionen des Scripts: # Vorbelegung des Wertes mit --entry-text=asdf moeglich # so koennte ein Template vorgeschlagen werden, das auch in der Datei mit der # Nummerliste steht. if [ -z "$text" ];then echo 'Texteingabe und SMS-Versand ohne Aenderungen und Versand abgebrochen.' echo exit fi fi echo "Versende die SMS, ${#text} Zeichen:" echo "$text" echo echo "Versende SMS an:" egrep -o '^[^#]*' $list echo echo "Any key to continue or [Ctrl] + [C] to abort or '--help' for help." # Lies ein Zeichen ein... read -n 1 echo # For-Schleife ginge auch, geht aber nicht Zeilen sondern Woerter durch... # -> fuehrt nicht zu erwuenschtem Ergebnis. #for empfaenger in `egrep -o '^[^#]*' list`; do #do # echo $empfaenger #done # Zum archivieren der SMS inklussive Ergebnis von gammu... logfilename=$list$(date +%F_%H.%M.%S) # SMS + Datum in Logfile schreiben... echo "[$(date '+%F %H:%M:%S')]" > "$logfilename" echo "$text" >> "$logfilename" echo '---' >> "$logfilename" i=1 numberofsms=$(egrep -o '^[^#]*' $list|egrep -o '\[[0-9+]*\]'|egrep -o '[0-9+]*'|wc -l) # Gehe die Textdatei $list Zeilweise durch, wobei alles nach '#' # entfernt wird (Kommentar) und dann leere Zeilen nicht mehr dabei sind. # Jeweils eine solche Kommentarbereinigte Zeile steht in $empfaenger... egrep -o '^[^#]*' $list|while read empfaenger; do # Finde die Nummer in [ ] und speichere nachher nur die Nummer ohne [ ] nummer=$(echo $empfaenger|egrep -o '\[[0-9+]*\]'|egrep -o '[0-9+]*') # Wenn die $nummer nicht leer ist nach Entfernung von ungueltigen Zeichen # verschicke die SMS... if [ ! -z "$nummer" ]; then echo |tee -a $logfilename echo "Sende an $empfaenger... (Empfaenger $i von $numberofsms)"|tee -a "$logfilename" # Damit das Handy sich nicht ueberanstrengt... ;) # (Und man auch eine Chance bekommt abzubrechen) sleep $delay echo "$text"|gammu --sendsms TEXT $nummer -autolen $maxchars|tee -a "$logfilename" i=$(($i+1)) fi done echo echo '...fertig!' }}} = Weblinks = * [https://l10n.cihar.com/projects/gammu Mithelfen: Gammu via Webinterface übersetzen] {en} * [http://www.gammu.org/wiki/index.php?title=Gammu:Reporting_bugs Programmfehler (richtig) melden] {en} #tag: Kommunikation, Büro, Handy