Documentazione
torna al sito web >

Anwendungsbeispiele

Beispiel einer LANCOM-Session

Dieses Telnet-Modul wurde ursprünglich für einen Anwendungsfall zur Kontrolle eines LANCOM-Routers erstellt, es gibt natürlich jede Menge anderer Einsatzzwecke.

In diesem Beispiel zeigen wir, wie eine bestimmte Firewall-Regel aus- bzw. eingeschaltet wird. Im selben Skript könnte dann eine AS2-Verbindung aufgebaut werden um eine EDI-Nachricht zu versenden. Unser Beispiel ist ohne Fehlerbehandlung sehr rudimentär. Es kann aber durchaus die Basis für Ihre erste Telnet-Anbindung werden.

Für diejenigen die die LANCOM-Router nicht kennen, ein kurzer Abriss. Der Router lässt sich zum einen mit einem grafischen Tool konfigurieren, aber parallel dazu auch über das Telnet-Protokoll. In diesem Beispiel wurde zuvor eine Firewall-Regel definiert, die ausgehend das AS2-Port 8080 sperrt. Bei einer anstehenden Übertragung, soll EULANDA jedoch das Port für diesen Zeitraum öffnen. Die Regel hat den Namen "REJECT_AS2".

Firewall Regel zur Blockung von AS2-Datenpaketen

Über eine Telnet-Session kann man nun diese Regel ein- bzw. ausschalten. Das Skript  für eine interne Ausführung hierzu würde wie folgt aussehen:

Dim Telnet
Const Prompt = "> "
Const Password = "Password: "
Const More = "MORE [Q(uit)]>"
Set Telnet = Client.CreateObject("TELNETLIB")
Telnet.Host = "192.168.0.1"
Telnet.Connected = true
Telnet.WaitForStrings Prompt & vbCRLF & Password
if Telnet.LastLine = Password then
 Telnet.SendPassword "SPECTRE"
 Telnet.WaitForStrings Prompt
end If
Telnet.Send "cd setup/IP-Router/Firewall/Rules/REJECT_AS2"
Telnet.WaitForStrings Prompt
Telnet.Send "set firewall_rule no"
Telnet.WaitForStrings Prompt
Telnet.Send "exit"
Telnet.Disconnect
Set Telnet = nothing

Nach dem Connect wird ggf. auf ein Passwort bzw. das Prompt gewartet. Wird vom Telnet-Server eine Passwort Anfrage gesendet, so wird dieses gesendet. Danach wird in das Konfigurations-Verzeichnis der Firewall bzw. direkt in die Regel mit dem LCOS "cd"-Befehl gewechselt. Der Spaltenname "firewall_rule" der Regetabelle zu der angewählten Regel "REJECT_AS2" wird auf "no" gesetzt und die Verbindung wird getrennt.

Auf die gleiche Weise kann die Firewall-Regel wieder eingeschaltet werden, nur dass hier der Spaltenwert auf "yes" gesetzt wird.

Dieses einfache Beispiel zeigt, welche neuen Möglichkeiten sich mit EULANDA 6 zur automatischen Übertragung von Daten oder dem Konfigurieren von abgesetzten Einheiten ergeben.

Das gleiche Skript kann durch voranstellen des Blocks, wie im Kapitel Hybrid-Skript beschrieben, auch direkt als Vbs-Datei vom Betriebssystem gestartet werden.

Beispiel SMTP über Telnet

Dieses Beispiel zeigt den Einsatz eines Telnet-Clients zu Versand eines Emails. Das Beispiel wird nur mit internen Mailservern funktionieren, da die externen heute alle eine Authentifizierung erwarten.

Das folgende Beispiel ist sehr einfach gehalten, und mit einem lokalen Exchange-Server getestet.

Dim Telnet
Set Telnet = Client.CreateObject("TELNETLIB")
Telnet.Host = "192.168.0.10"
Telnet.Port = 25
Telnet.Connect
Telnet.WaitForStrings "+0100"
Telnet.Send "hello"
Telnet.WaitForStrings "]"
Telnet.Send "mail from:<cn@eulanda.de>"
Telnet.WaitForStrings "OK"
Telnet.Send "rcpt to:<info@eulanda.de>"
Telnet.WaitForStrings "OK"
Telnet.Send "data"
Telnet.WaitForStrings "<CRLF>.<CRLF>"
Telnet.Send "Subject: Eulanda Telnet-Test" &_
                  vbCrLf & vbCrLf &_
                  "Dies ist der Mailbody" &_
                  vbCrLf & "."
Telnet.WaitForStrings "Queued mail for delivery"
Telnet.Send "quit"
Telnet.Wait 2000
Telnet.ShowStrings Telnet.SessionLog
Telnet.Disconnect
Set Telnet = nothing

Am Ende der Kommunikation wird die komplette Session zur Kontrolle in einem Textfenster angezeigt. Hier kann man auch kontrollieren, ob die "WaitForStrings" richtig greifen.

Zusammenfassung

Vorbereitung

EULANDA.exe einmalig mit "eulanda.exe /Regserver" im Administrator-Moudus starten.

Hybrid-Vorschaltblock

Dim EulandaObjStr : EulandaObjStr = _
 "Dim app, client, ellib, consts, dataset" & vbCrLf &_
 "Set app = CreateObject(""Eulanda.Application"")" & vbCrLf &_
 "Set client = App.Clients(""Eulanda GmbH"")" & vbCrLf &_
 "client.active = True" & vbCrLf &_
 "Set ellib = Client.createobject(""Context"").ellib" & vbCrLf &_
 "Set consts = Client.createobject(""Context"").consts" & vbCrLf &_
 "Set dataset = Client.createobject(""CurrentDataset"", ""Eulanda.Adresse"")"
Sub EulandaObj
 Dim dummy
 dummy = False
 on error resume next
 if Wscript.ScriptFullName <> "" Then dummy = True
 if err.number = 0 Then ExecuteGlobal EulandaObjStr
 on error goto 0
end Sub
EulandaObj

Befehle

Befehl

Attribut

Beschreibung

Property AcceptData: Boolean

RW

Empfangspuffer wird gefüllt

Property BytesSend: Integer

R

Bytes gesendet nach SEND-Befehl

Property Command: Integer

W

Natives Kommando lauf RFC

Method Connect

Verbindet mit Host

Method Disconnect

Trennt vom Host

Method DoEvents

Ermöglicht Message-Abarbeitung

Property FirewallAutotetect: Boolean

RW

Firewall benutzen, falls erkannt

Property FirewallPassword: String

RW

Firewall-Passwort

Property FirewallPort: Integer

RW

Port zur Firewall

Property FirewallType: Integer

RW

0=Nicht verwenden

Property FirewallUser: String

RW

Benutzer an Firewall

Property FirewallHost: String

RW

Host-Name der Firewall

Function GetConfig(Key: String): String

Textbasierte Konfiguration abrufen

Method HelloWorld

Testet mit Popup auf Telnet-Bibliothek

Property Host: String

RW

Host-Name des Telnet-Server

Property Lastline: String

R

Letzte Empfangszeile

Property Linelen: Integer

RW

Virtuelle Bildschirmbreite

Property Pagelen: Integer

RW

Virtuelle Bildschirmhöhe

Property Port: Integer

RW

Port des Telnet-Server

Function Receive: String

Empfangsdaten seit letztem Send-Befehl

Method Send(Value: String)

Senden einen Text zzgl. CRLF

Method SendMore

Sendet nur CRLF

Method SendPassword(Value: String)

Sendet Passwort ohne Logging

Property ServerDoesEcho: Boolean

RW

Server sendet Zeichen-Echo

Property SessionLog: String

RW

Alle übertragenen Nutzdaten

Method SetConfig(Key: String; Value: String)

Setzt textbasierte Konfiguration

Method ShowStrings(Value : String)

Text-Ausgabefenster

Property StatusLog: String

RW

Statuslog der Session

Property TelnetTimeout: Integer

RW

Timeout auf Telnetebene

Method Terminal

Interaktives Terminalfenster nach Connect

Property Timeout: Integer

RW

Timeout für Wait-Befehle

Property Transparent: Booelan

RW

Receive zeigt auch native Daten

Method Wait(Value: Integer)

Wartet x mSec.

Method WaitForStrings(Value: String)

Wartet auf empf. Strings (CRLF getrennt)