Tags linux Wechsle die Anzeige der Kommentare | Tastatur-Bedienung

  • mc um 16:20 am 7. March 2014 Permalink | antworten
    Begriffe: , , linux, raspberry pi   

    Raspberry Pi: SMS2Email Gateway mit AldiStick 

    Es ist mal wieder soweit. Ich habe einen neuen Handyvertrag und auch eine neue Handynummer. Dies nehme ich zum Anlass, meine “damalige” Anleitung zum Bau eines SMS2Email Gateways für die Synology Diskstation DS211j zu überarbeiten und für den Raspberry Pi auf Stand zu bringen. Die Tatsache, dass mein AldiStick bereits mit “Lösung 1″…

    Schön, unser Stick wird als USB-Datenträger erkannt. “Moderne” Linuxe erkennen diese Situation dank uDev und schalten den Stick automatisch in den Modem Modus – wir müssen das aber leider von Hand machen. Dazu gibt es zwei Möglichkeiten:

    • wir schalten den Stick auf einem Linux Rechner dauerhaft in den Modem Modus. Da hilft Google weiter. Oder dieser Link. Oder dieses PDF.
    • wir benutzen das Paket usb_modeswitch

    * Update: inzwischen hat es mich ziemlich genervt, dass ich den USB-Modus des Sticks nach jedem Reboot wieder manuell umschalten musste – zumal das per Init-Script irgendwie nicht funktionierte. Also hab ich dann doch mal “Lösung 1″ Ausprobiert und des Datenträger komplett deaktiviert:

    1. picocom /dev/ttyUSB1

    picocom v1.6
    port is : /dev/ttyUSB1
    flowcontrol : none
    baudrate is : 9600
    parity is : none
    databits are : 8
    escape is : C-a
    local echo is : no
    noinit is : no
    noreset is : no
    nolock is : no
    send_cmd is : sz -vv
    receive_cmd is : rz -vv
    imap is :
    omap is :
    emap is : crcrlf,delbs,
    Terminal ready
    ATZ
    OK
    ATI
    Manufacturer: huawei
    Model: E1550
    Revision: 11.608.13.01.52
    IMEI: 353443045652026
    +GCAP: +CGSM,+DS,+ES
    OK
    AT^U2DIAG=0
    OK

    Das wars. Beim nächsten Neustart ist und bleibt der Stick ein Modem…

    …dauerhaft in den Modem-Modus geschaltet ist, scheint mir das Leben dabei sehr leicht zu machen. (Aber vielleicht kaufe ich mir nachher im REWE auch einen “gesimlockten” Stick für 10€ und probiers damit auch mal.) Ebenfalls spielt mir das auf dem Raspberry Pi installierte Raspbian in die Karten – Debian in klein halt. Und so zeigte auch das Einstecken des AldiSticks das zu erwartende, aber dennoch überaus erfreuliche Ergebnis:

    [ 4.683102] usb 1-1.3: Product: HUAWEI Mobile
    [ 4.688842] usb 1-1.3: Manufacturer: HUAWEI Technology
    [ 4.699791] usb-storage 1-1.3:1.0: USB Mass Storage device detected
    [ 4.710090] usb-storage 1-1.3:1.1: USB Mass Storage device detected
    [ 4.752041] usb-storage 1-1.3:1.2: USB Mass Storage device detected
    [ 22.615306] usbserial: USB Serial support registered for generic
    [ 23.466525] usbserial: USB Serial support registered for GSM modem (1-port)
    [ 23.741833] option 1-1.3:1.0: GSM modem (1-port) converter detected
    [ 23.946533] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
    [ 24.167174] option 1-1.3:1.1: GSM modem (1-port) converter detected
    [ 24.357518] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
    [ 24.540019] option 1-1.3:1.2: GSM modem (1-port) converter detected
    [ 24.687946] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2

    Das Modem wird erkannt. Und auch hier zeigt ein einfaches cat /dev/ttyUSB3, dass der Zugriff funktioniert:

    ^BOOT:45652026,0,0,0,87
    ^RSSI:8
    ^RSSI:8
    ^RSSI:0
    ^RSSI:7
    ^RSSI:7

    Die Installation der smstools ist auf dem Raspberry Pi ebenfalls erheblich unaufgeregter zu erledigen als auf der Diskstation. Denn im Gegensatz zu dieser gibt es für den Raspberry Pi entsprechende Pakete :) Bäm!

    pi@raspberrypi ~ $ sudo apt-get install smstools
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    Die folgenden NEUEN Pakete werden installiert:
    smstools
    0 aktualisiert, 1 neu installiert, 0 zu entfernen und 3 nicht aktualisiert.
    Es müssen noch 0 B von 143 kB an Archiven heruntergeladen werden.
    Nach dieser Operation werden 414 kB Plattenplatz zusätzlich benutzt.
    Vorkonfiguration der Pakete ...
    Vormals nicht ausgewähltes Paket smstools wird gewählt.
    (Lese Datenbank ... 71276 Dateien und Verzeichnisse sind derzeit installiert.)
    Entpacken von smstools (aus .../smstools_3.1.14-1.2_armhf.deb) ...
    Trigger für man-db werden verarbeitet ...
    smstools (3.1.14-1.2) wird eingerichtet ...
    Starting SMS Daemon: smsd.
    pi@raspberrypi ~ $

    Das war’s auch schon fast! Nun muss man sich nur noch die Konfiguration zurechtstricken und – wenn man möchte – einen Eventhandler einrichten, der auf empfangene SMS reagiert. Die Konfiguration ist standardmäßig recht leicht verständlich, so dass ich hier nur die von mir angepassten Einträge der Datei /etc/smsd.conf aufzeigen möchte:

    devices = GSM1
    eventhandler = /usr/bin/smsevent
    [GSM1]
    device = /dev/ttyUSB0
    incoming = yes
    signal_quality_ber_ignore = yes
    init = AT+CPMS="ME"
    #Congstar
    smsc = 491710760000

    Die Werte für signal_quality_ber_ignore, init und smsc müssen jeweils für das verwendete GSM-Modem und die SIM-Karten bzw. den Provider angepasst werden. Da hilft Google weiter…

    Nun muss man sich nur noch einen Eventhandler (z.B. /usr/bin/smsevent) basteln und fertig ist die Laube!

     
  • mc um 11:28 am 6. March 2014 Permalink | antworten
    Begriffe: , linux   

    SED – i love it! 

    Gut dass ich mir das damals mal aufgeschrieben habe! Mit sed lassen sich nicht nur einzelnen Zeilen, sondern auch ganze Dateien verarbeiten. Dieses Multiline-Pattern-Matching hab ich hier erklärt. Und heute konnte ich es nochmal selber brauchen.
    Die Aufgabe war, in Hunderten FTP-Server-Konfigurationsdateien den letzten Konfigurationsblock zu kopieren, darin ein paar Werte zu ändern und als neuen Block ans Ende der bestehenden Datei anzufügen. Und das ging dann so:

    for file in *.conf ; do sed -n -e '1h; 1!H; ${ g; s/\(.*\)\( Directory \/srv\/ftp\/ftp2\/.*\/xml .*\)$/\2/gi ; s/xml/html/gi ; s/_X_/_H_/gpi }' $file >> $file ; done

    Geil, oder?

     
  • mc um 19:31 am 9. January 2014 Permalink | antworten
    Begriffe: , linux, ,   

    Mails per bash herunterladen und als Datei speichern 

    Heute stand ich vor dem Problem, dass ich die Autoresponder-Mails eines Newsletter-Postfachs auslesen und auswerten wollte. Das Ganze natürlich per cronjob angetriggert und vollautomatisch. Es scheiterte zuerst an der grundsätzlichen Möglichkeit, Mails über POP3 abzurufen und als Textdatei zu speichern. Müsste doch gehen – ist doch Linux. Geht auch: fetchmail heißt das (quasi Standard-) Zauberwort. Fetchmail war mir aber zu aufgeblasen und wie man’s konfiguriert weiß ich auch nicht. Als Alternative fiel mir irgendwann getmail in die Hände – und schon war’s einfach…

    Zuerst mal getmail installieren und das Konfigurationsverzeichnis anlegen:
    $ sudo apt-get install getmail4
    $ sudo mkdir ~/.getmail

    Dann braucht man noch dort eine (simple) Konfigurationsdateim (~/.getmail/getmailrc):
    [retriever]
    type = SimplePOP3Retriever
    server = pop3.dein-server.de
    username = username@dein-server.de
    password = dEiNPassWOrt!

    [destination]
    type = Maildir
    path = ~/path/to/maildir

    [options]
    delete = true

    Der unter destination/path festgelegte Ordner muss über eine gültige maildir Struktur verfügen und die Unterordner cur, new und tmp enthalten. Mit
    $ getmail
    kann man nun an der Konsole Mails abrufen. Fertig ist die Laube…

     
  • mc um 10:57 am 25. July 2013 Permalink | antworten
    Begriffe: , linux, mysql,   

    MySQL Datenverzeichnis verschieben. Leicht gesagt. 

    Auf meinem neuen Linux Webserver wollte ich – um mir das Datensicherungsgehähe zu vereinfachen – den Datenbankpfad für MySQL verschieben. Eigentlich ganz einfach, da nur der Eintrag datadir = /var/lib/mysql in der Datei /etc/mysql/my.cnf anzupassen ist. Blöderweise ließ sich nach dieser Anpassung der Dämon (mit Error 13 – Zugriff verweigert) nicht mehr starten. Schuld ist AppArmor, welches das neue Datenverzeichnis noch nicht kennt und den Zugriff dort hin blockiert.

    Zum Glück ist die Lösung einfach und hier gut dokumentiert. Man muss die AppArmor Konfiguration in der Datei /etc/apparmor.d/usr.sbin.mysqld um den neuen Datenpfad ergänzen. Dazu werden die folgenden Zeilen angefügt:

    /srv/mysql/ r,
    /srv/mysql/** rwk,

    Nach einem Neustart von AppArmor mit sudo service apparmor restart lässt sich dann auch myssql wieder starten: sudo service mysql restart

    Nochmals Danke an Matthias!

     
  • mc um 14:38 am 19. June 2013 Permalink | antworten
    Begriffe: , linux   

    “Ein Problembericht liegt vor!” nervt 

    “Ein Problembericht liegt vor!” unter Linux (Ubuntu) nervt mich tierisch. Aber ein kurzes googlen brachte die einfache und wirklungsvolle Lösung zu Tage: einfach in der Datei /etc/default/apport den Wert von enabled auf 0 setzen. Dann noch mit sudo service apport stop den Dämon stoppen und schon ist Ruhe…

     
  • mc um 12:34 am 18. June 2013 Permalink | antworten
    Begriffe: , , linux   

    “multiline pattern matching” mit sed 

    Ich liebe sed. Und manchmal auch awk. Beide haben aber das Problem, dass man nicht einfach(!) mehrzeilige Pattern suchen und ersetzen kann. Dachte ich zumindest bis gerade eben. Aber man lernt ja nie aus – “hold space” ist das Zauberwort…

    But we can optimize this. Besides pattern space, sed also provides the so called hold space. This is just a temporary buffer on which no operations are performed. We can use this to read the whole input into it first and then replace the pattern space with the contents from hold space. That looks like this:

    sed -n ’1h; 1!H; ${ g; s/foo\nbar/bla\nblub/ p }’

    That first reads the first line from pattern space into hold space (1h) replacing all contents which currently exist in hold space. Then all lines except line 1 are appended to hold space (1!H). The reason why we cannot only use 1,$H is that this would result in a blank line at the beginning since hold space has not been emptied. As soon as the end of the string is reached (range marker $), a subclause is opened which writes contents from hold space into pattern space (g) and does the replacement. Because we have read everything into hold space and then into pattern space, we would get double output. To avoid this, the parameter -n (no output) is set and the edited final string is printed manually with the p command from within the subclause. This method works remarkably well, but you should note that it is much slower if the stream/file is very long. One advantage of sed over many other tools is that it reads line by line, so it doesn’t take more memory when working on long strings. This advantage is abrogated with this method. Keep that in mind.

    Danke an Janek Bevendorff, der mein IT-Leben mit diesem Post echt leichter gemacht hat ;-)

     
  • mc um 06:18 am 14. June 2013 Permalink | antworten
    Begriffe: , linux, vmware   

    VMware Player unter Ubuntu/ Linux… 

    …läuft nach einem apt-get update/upgrade nicht mehr und will Module kompilieren? Und das scheitert? Mit folgendem Befehl kann man den Vorgang manuell anstoßen:
    sudo vmware-modconfig --console --install-all

     
  • mc um 17:39 am 20. April 2013 Permalink | antworten
    Begriffe: gps, , linux   

    Foretrex 201/ Ubuntu 

    Mein Windows 8 Rechner erkennt mein Prolific RS232->USB Kabel nicht mehr. Da ich aber auf die Schnelle eine Lösung brauchte um meinen Track vom (nur seriellen) Garmin Foretrex 201 zu ziehen, habe ich meine Ubuntu VM gestartet und erfreut festgestellt, dass das Prolific Wandlerkabel als /dev/ttyUSB0 erkannt wurde. Wie hier auf XALPS.DE beschrieben, versuchte ich dann auch direkt mutig, den Track mit gpsbabel abzuziehen. Ging nicht :-/ Unable to init /dev/ttyUSB0. Die Lösung war dann am Ende wieder ganz einfach: das Garmin Protokoll arbeitet mit 9600 Baud – und das konnte die Schnittstelle unter Ubuntu ja nicht wissen. Also flux ein sudo stty -F /dev/ttyUSB0 9600 im Terminal abgesetzt und schwups – dann gings.

     
  • mc um 16:26 am 4. June 2012 Permalink | antworten
    Begriffe: , , linux,   

    ProFTPd: langsames Login 

    Die Logins auf dem ProFTPd Server hinter unserer Firewall dauerten (bis eben) ewig. Nach dem Connect auf dem Server vergingen gut und gerne bis zu 60 Sekunden, bevor die Verbindung hergestellt wurde. Im Netz findet man allerlei Anleitungen, die das Problem angehen. Meist wird

    IdentLookups off
    UseReverseDNS off

    als Lösung empfohlen. Hat bei mir aber nix gebracht. Erst in den Tiefen des Webs wurde ich dann fündig: das Problem liegt nicht bei ProFTPd, das Problem ist der xinetd! Dieser logged standardmäßig jede Menge Infos:

    log_on_success += PID HOST USERID EXIT DURATION
    log_on_failure += HOST USERID ATTEMPT

    Warum das hier bei mir nicht funktioniert ist mir eigentlich egal. Kommentiert man diese beiden Zeilen nun einfach mal aus, so geht die Anmeldung am Server wieder extrem schnell!

    Datei: /etc/xinetd.d/proftpd

    1. default: on
    2. description: The ProFTPD FTP server

    service ftp
    {
    socket_type = stream
    protocol = tcp
    wait = no

    1. bind = IP

    instances = 30
    user = root
    server = /usr/sbin/proftpd
    # log_on_success += PID HOST USERID EXIT DURATION

    1. log_on_failure += HOST USERID ATTEMPT
    2. nice = 10
    3. disable = yes

    }

    NACHTRAG: Sollte der obige Tipp nicht helfen: eine weitere Ursache kann das Fehlen der Direktive DefaultAddress in der Konfiguration sein. Ich habe diese soeben eingetragen und schwupps – wieder schnell…

     
  • mc um 17:47 am 3. May 2012 Permalink | antworten
    Begriffe: , linux   

    Diskstation: SMS2Email Gateway mit AldiStick 

    Firmenhandys sind ‘ne tolle Sache – aber nicht jeder kennt meine neue Nummer. Also hab ich auf meiner alten Nummer kurzerhand eine Rufumleitung/ -weiterleitung eingerichtet. Auch ‘ne tolle Sache. Aber leider funktioniert das bei SMS bekanntermaßen nicht. Also musste ein SMS2Email Gateway her, der auf der alten Nummer eingehende SMS als Email auf mein neues Handy schickt. Auf meinem Nagios Linux Server hatte ich sowas ähnliches schon mal gebastelt, also sollte das doch auch mit meiner Diskstation zu machen sein…
    Als Hardware stand mir eine Synology Diskstaion DS211j (mit Firmware DSM 3.2, v1944, Kernel 2.6.32) und ein AldiStick (schwarzer UMTS Stick, Medion S4012, aka Huawei E620 bzw. E1550) sowie eine PIN-freie AldiTalk SIM-Karte zur Verfügung. Vorweg: es läuft – aber es war nicht einfach! (mehr…)

     
c
Schreibe einen neuen Beitrag
j
Nächster Beitrag/Kommentar
k
vorheriger Beitrag/Kommentar
r
antworten
e
bearbeiten
o
Zeige/Verstecke Kommentare
t
an den Anfang
l
Zur Anmeldung
h
Zeige/Verstecke die Hilfe
shift + esc
Abbruch