vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfragen und String auslesen 
Autor: jasmina
Datum: 17.04.12 12:06

Hallo,
ich benutze das Objekt TelnetExpect- um mich auf eine Unix-Maschine einzuloggen und dort
Befehle auszuführen oder Verzeichnisse abzufragen.
Die Telnet-Klasse besitzt einen Expector um Daten zu lesen und zu schreiben.

(Beschreibung der Expector-Class: 
Public Class Expector
          Inherits System.Object
     Member von TelnetExpect
Zusammenfassung:
Provides UNIX Expect-like scripting of terminal connections.
)
Problem ist, das der Expector die Auswertung des DatenStreams übernimmt.
Ich definiere zwar ein Buffer-Byte-Array - aber wie kann ich den DatenStream ggf. in einer Schleife
auslesen, wenn das Byte-Array zu klein ist,
und 2. nachdem ich das DatenStream-Objekt auslese kann ich das Expect-Object nicht mehr benutzen, um abzufragen ob der Empfangsstring vorliegt sondern müsste dies selbt übernehmen.

Anbei der Code:
 
im Formular:
Public Class frmTelnet
  Dim cTelnet As TelnetVerbindung.clstelnetsteuerklasse   'Klasse, die die 
  ' Telnet-Verbindung regelt
    'im Load des Formulars
   Private Sub frmTelnet_Load(sender As System.Object, e As System.EventArgs) _
     Handles MyBase.Load
      cTelnet = New TelnetVerbindung.clstelnetsteuerklasse("xy", "user", _
      "passwort")
   End Sub
 
      'Beim Button-Klick Auslösen der Telnet-Verbindung
   Private Sub cmdTelnet_Click(sender As System.Object, e As System.EventArgs) _
     Handles ....
      cTelnet.Run()
   End Sub
end Class
 
Klasse: clstelnetsteuerklasse   
'Import  und Implementiert die Klasse Diagnostics =>
'Ermöglicht den Zugriff auf lokale Prozesse und Remoteprozesse 
'sowie das Starten und Anhalten lokaler Systemprozesse. 
Imports System.Diagnostics
 
'Importiert und Implementiert  die String-Klasse
Imports System.Text
 
'Importiert und Implementiert  die Stream-Reader-Writer Klasse
Imports System.IO
 
'Importiert und Implementiert NetzwerkKlasse
Imports System.Net.Sockets
 
'Importiert und implementiert die TelnetExpect-Klasse 
'Public Class Expector
'Inherits System.Object  =>   Member von TelnetExpect
'Zusammenfassung:
'               Provides UNIX Expect-like scripting of terminal connections.
Imports TelnetExpect
 
Public Class clstelnetsteuerklasse
  Dim fexExpector As Expector
 
  Public Sub Run()
    Dim Telnet As TelnetStream = Connect()     
          'Angabe bezüglich der Rückmeldungen => Echo,TRUE => Ein-und 
          ' Ausgabe-Mitteilungen 
    Telnet.SetRemoteMode(TelnetOption.Echo, True)
 
         'Stellt eine Internet oder UNIX-Domain-Verbindung her - Bietet 
         ' Unix-Scriptsprache
    fexExpector = New Expector(Telnet)
 
          'Abfrage, ob im Sendestring das Wort 'login:' vorkommt
    fexExpector.Expect("login:")
 
         'Absenden LoginName
     fexExpector.SendLine(fsUserName)
 
        'Abfrage ob im Rücksende-String Wort 'Password'  vorkommt
     fexExpector.Expect("Password")
 
       'Absenden des zugehörigen Passwortes
     fexExpector.SendLine(fsPasswort)
     Dim str As Stream = Nothing
 
     Dim Buffer(4048) As Byte'Setze einfach mal sehr großen Buffer ein, aber 
     ' wenn dieser nicht  ausreicht?
     Telnet.Read(Buffer, 0, Buffer.Length)
 
     Dim Anzeige As String = System.Text.Encoding.ASCII.GetString(Buffer)
        'Nun habe ich String-Element (so wie ich wollte) -  ABER!!!!
 
   ''Abfragen ob im RücksendeString folgender String vorkommt:  _
     '<Hostname><Username>'
 
'jedoch funktiert jetzt das Expect-Objekt nicht mehr und ich muss mich selbst 
' darum kümmern!!!
   'fexExpector.Expect(fsHostName & fsUserName)
 
    fexExpector.SendLine("dir")
 
    Telnet.Read(Buffer, 0, Buffer.Length)
    Anzeige = System.Text.Encoding.ASCII.GetString(Buffer)
 
    'fexExpector.Expect(fsHostName & fsUserName )
    fexExpector.SendLine("ll tueirgendwas...")
 
     Telnet.Read(Buffer, 0, Buffer.Length)
     Anzeige = System.Text.Encoding.ASCII.GetString(Buffer)
    'fexExpector.Expect(fsHostName & ": " & fsUserName & ":")
   End Sub
 
    'Aufbau der Verbindung durch Telnet-Connect
   Private Function Connect() As TelnetStream
      Dim client As New TcpClient(fsHostName, TelnetStream.DefaultPort)
      Dim networkStream As Stream = client.GetStream
      Dim Telnet As New TelnetStream(networkStream)
 
       Return Telnet
 
     End Function
end class
Zusammenfassend:
Wie kann ich das Stream-Objekt in einen String auslesen mittels einer While-Schleife
und gleichzeitig das Expect-Objekt nutzen?

Danke
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfragen ...3.273jasmina17.04.12 12:06
Re: Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfra...1.728Blackbox17.04.12 19:26
Re: Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfra...1.820ModeratorDaveS19.04.12 13:11
Re: Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfra...1.741jasmina18.04.12 16:33
Re: Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfra...1.909jasmina18.04.12 17:14
Re: Telnet Windows-Unix - Klasse TelnetExpect.Expect - Abfra...1.766ModeratorDaveS19.04.12 13:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel