IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

commande Telnet en visual bascic vbnet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut commande Telnet en visual bascic vbnet
    Bonjour a tous,

    Je souhaiterais exécuter une commande telnet, avec récupération du retour fait de la machine distante.
    Sous dos la comme telnet, fonctionne correctement, pour cela je fais telnet xxxxx , puis controle A puis ma commande.

    j'ai trouvé ce code, qui a priori doit fonctionner, mais dans ma texte box je n'ai aucun retour.
    je pense que mon CTRL A ne fonctionne pas. J'ai essayé plusieurs méthodes pour effectuer mon CTRL A, mais sans succès.

    Ci dessous le code, si vous avez une solution, je suis preneur. merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    Imports System.Net
    Imports System.Net.Sockets
    Imports System.IO
    Imports System.Text
     
    Public Class Form1
     
        Private oTCPStream As Net.Sockets.NetworkStream
     
        Private oTCP As New Net.Sockets.TcpClient()
     
        Private bytWriting As [Byte]()
     
        Private bytReading As Byte()
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Try
                TextBox3.Text = ""
                TextBox3.Text = "DEMMARRAGE ... "
                System.Threading.Thread.Sleep(5)
                oTCP.SendTimeout = 1500
                System.Threading.Thread.Sleep(50)
                oTCP.Connect("192.168.1.81", "23")
                TextBox3.Text = "connexion ... en cours "
                oTCPStream = oTCP.GetStream
     
                'TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf 'Reads data from switch/server and displays it in a textbox
                WriteData("☺A20" & vbCrLf) 'This line can repeated as many times as you like. You just need to adjust the time the application waits before starting the next line of code.
     
                TextBox3.Text = "commande envoyé "
     
                System.Threading.Thread.Sleep(500) 'Pauses the application before starting the next line of code.
     
                TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf
                oTCPStream.Close() 'Closed the NetworkStream
     
                oTCP.Close() 'Closed the TcpClient/Socket
     
                MsgBox("connection CLOSE")
     
            Catch Err As Exception
     
                MsgBox(Err.ToString)
     
            End Try
     
        End Sub
     
     
        Private Function ReadData() As String
     
            Dim sData As String
     
            ReDim bytReading(oTCP.ReceiveBufferSize)
     
            oTCPStream.Read(bytReading, 0, oTCP.ReceiveBufferSize)
     
            sData = Trim(System.Text.Encoding.ASCII.GetString(bytReading))
     
            ReadData = sData
     
        End Function
     
        Private Sub WriteData(ByVal sData As String)
     
            bytWriting = System.Text.Encoding.ASCII.GetBytes(sData)
     
            oTCPStream.Write(bytWriting, 0, bytWriting.Length)
     
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            TextBox3.Text = " ... "
     
        End Sub
    End Class

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    tu as essayé de mettre un point d'arret dans la méthode qui lit ?
    tu as regardé la doc de ce à avec quoi tu essayes de communiquer ? c'est bien ca qu'il attend pour répondre ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Bonjour Pol63,

    Je viens d'essayer ce code sur un autre équipement, il fonctionne correctement. c'est a dire que j'arrive a me connecter, avec user et mdp, avec un retour de mon matériel dans ma textbox.
    sur le matériel que je souhait connecter, j'arrive a faire ce que je veux sous dos en telnet, connexion, interrogation ...
    Je pense donc que mon pb c'est le CTRL + A, que je fais manuellement sous dos, et que je n'arrive pas a intégrer dans le code.

    Si tu as une idée, je suis preneur.
    c'est frustrant de rester bloqué sur un CTRL A

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    il faut que tu trouves ce que fais ctrl A sur telnet pour faire la même chose en octets envoyés
    un des moyens simples c'est d'écouter sur un port en .net, de lancer telnet pour qu'il se connecte à ton programme, et tu fais ce que tu fais d'habitude, comme ca tu auras tous les octets réellement et tu pourras ensuite faire pareil dans ton programme qui doit réellement communiquer avec le truc
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 501
    Par défaut
    si tu regardes le code, tu verras que la commande de ligne 30 est prise comme du texte, donc envoie la chaine "☺A20" avec retour chariot (Cr) et un retour à la ligne (Lf).
    A priori Ctrl+A (SOH) envoie l'octet 0x01 (https://en.wikipedia.org/wiki/Contro...acter#In_ASCII : Ctrl+G envoyant l'octet 0x07 dans le wiki)
    donc il faudrait ici envoiyer directement cet octet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oTCPStream.WriteByte(1)
    Edit: oups en effet, 1 dans le code, petite erreur de ma part

  6. #6
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Merci pour votre aide, je viens de faire un essai, mais sans succès. ci dessous le code modifié.

    Est'ce comme ca qu'il fallait faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    oTCPStream = oTCP.GetStream
                System.Threading.Thread.Sleep(500) 'Pauses the application before starting the next line of code.
     
                oTCPStream.WriteByte(7)
     
                System.Threading.Thread.Sleep(500)
                WriteData("A20" & vbCrLf) 'This line can repeated as many times as you like. You just need to adjust the time the application waits before starting the next line of code.
                TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf
                System.Threading.Thread.Sleep(500) 'Pauses the application before starting the next line of code.
    Je viens aussi de capturer les traces via wirshark, est ce que ca pourrait aider?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Execution d'une commande telnet dans un script sh
    Par Nospher dans le forum Linux
    Réponses: 17
    Dernier message: 23/08/2011, 15h30
  2. recuperation apres commande telnet
    Par eozenn dans le forum VBScript
    Réponses: 0
    Dernier message: 21/04/2008, 10h47
  3. Redirection de commande Telnet
    Par Mac1303 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/06/2007, 15h47
  4. Envoyer une commande Telnet (bibliothèque Jakarta)
    Par XKCorp dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 19/09/2006, 13h57
  5. Faire du telnet avec visual c++ express
    Par jean tof dans le forum MFC
    Réponses: 2
    Dernier message: 10/01/2006, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo