bertram99
Goto Top

PUTTY BATCH zum Auslesen von SMS

Hallo,
ich möchte unter Windows7 von einem USB-Stick (Fonic Surf Stick) eingegangene SMS auslesen und auf dem PC speichern. Der Zugriff erfolgt mittels AT-Befehlen über PuTTY. Bei entsprechender Konfiguration der Putty-Konsole (unter read_sms gespeichert) und Eingabe der AT-Befehle funktioniert das Auslesen und Speichern einwandfrei.
Ich komme nicht weiter bei dem Versuch, die Befehlsfolge von einer Batch-Datei aufzurufen, wobei statt PuTTy jetzt plink genutzt wird. Die Windows-Konsole wird geöffnet, per Hand eingegebene AT-Befehler werden abgearbeitet. Es wird nichts gespeichert.

"read_sms": In Putty als Session gespeicherte Einstellungen.

Batch-Datei "sms.bat":
cd "c:\Program Files (x86)\PuTTY"
plink -load "read_sms"
plink -m "c:\Program Files (x86)\PuTTY\commands_plink.txt"

commands_plink.txt:
ATZ
at+cmgf=1
at+cmgl="all"

Es wäre nett, wenn jemand helfen könnte.

Content-Key: 238649

Url: https://administrator.de/contentid/238649

Printed on: April 25, 2024 at 11:04 o'clock

Member: Gahmuret
Gahmuret May 23, 2014 at 16:06:47 (UTC)
Goto Top
plink -load "read_sms"
plink -m "c:\Program Files (x86)\PuTTY\commands_plink.txt"

Hallo bertram99,

ich habe plink bisher noch nicht eingesetzt, aber das muss wohl

plink -load "read_sms" -m "c:\Program Files (x86)\PuTTY\commands_plink.txt"

lauten.

Grüße
Member: colinardo
colinardo May 23, 2014 updated at 16:22:35 (UTC)
Goto Top
Hallo bertram99,
der Parameter -m gilt leider nur für SSH-Sessions und nicht für serielle Kommunikation wie die Hilfe auch bestätigt, und wenn dann hättest du diese Befehl in einer Zeile zusammenfassen müssen. Alternativ, wenn es dir hilft, kannst du es mit einem passenden Powershell-Script erledigen (Dateipfad für die Ausgabe, und COM-Port anpassen):
$fileResult = "sms.txt"  
$PORT = "COM6"  
$com = new-Object System.IO.Ports.SerialPort $port,115200,None,8,1
$Error.Clear()
try{
    $com.Open()
    if($com.IsOpen){
        $com.Write("ATZ`r`n")  
        sleep -Milliseconds 50
        $com.Write("AT+CMGF=1`r`n")  
        sleep -Milliseconds 50
        $com.Write("AT+CMGL=""ALL""`r`n")  
        sleep -Milliseconds 500
        $response = $com.ReadExisting()
        write-host $response
        Set-Content $fileResult $response
    }else{
        write-host "Konnte COM-Port: '$PORT' nicht öffnen!" -ForegroundColor Red  
    }
     
}catch{
    write-host $Error -ForegroundColor Red
}
finally{
    $com.Close()
}
Grüße Uwe
Member: bertram99
bertram99 May 23, 2014 at 17:32:07 (UTC)
Goto Top
Hallo Gahmuret,
wie nachfolgend Colinardo schreibt, kann mein Ansatz nicht funktionieren. Dennoch herzlichen Dank für Hilfe-Versuch.
Herbert
Member: bertram99
bertram99 May 23, 2014 at 17:33:14 (UTC)
Goto Top
Hallo Uwe,
herzlichen Dank für mehr als nur ein Hinweis. Du hast mir sehr geholfen.
Grüße aus Dresden,
Herbert