Gå til innhold

Hjelp til script for telnet


Anbefalte innlegg

Hei.

 

Er det mulig å lage et vbs script for å utføre følgende.

 

-Start kommando linjen

-Telnet til ip 192.168.1.1

-Vent på respons

-ingen respons gi melding "ingen kontakt"

-ved respons send "passord"

-ingen respons gi melding "ingen kontakt"

-ved respons send "tast3"

-ingen respons gi melding "ingen kontakt"

-ved respons send "tast2"

-ingen respons gi melding "ingen kontakt"

-ved respons send "per"

-ingen respons gi melding "ingen kontakt"

-ved respons send "tast enter"

-ingen respons gi melding "ingen kontakt"

-ved respons send "teksten som ligger i fil c:/temp/test.txt"

-send "tast enter"

 

 

Har prøvd å lage noen vbs filer, men er helt på jordet her.

Noen som kan si om dette lar seg gjøre (tror da det), og hvilke kommandoer jeg bør bruke.

 

Takker så meget dersom noen tar seg tid til dette.

Lenke til kommentar
Videoannonse
Annonse

Besynderlig nok fikk jeg ikke STDIN og STDOUT til å fungere med Telnet.exe, hvilket betyr det blir nokså problematisk å avgjøre hvorvidt tilkoblingen fungerer, og hvorvidt de ulike meldingene blir oversendt med suksess. Å sende meldingene i seg selv er imidlertid intet problem:

 

' Benyttes i eksekveringen av telnet

Set WshShell = WScript.CreateObject("WScript.Shell")

 

' Kjør telnet

WshShell.Run "telnet.exe"

WScript.Sleep 5000

 

' Koble til den angitte datamaskin

WshShell.SendKeys "open 192.168.1.2" & Chr(13)

WScript.Sleep 5000

 

WshShell.SendKeys "passord" & Chr(13)

WScript.Sleep 2000

 

WshShell.SendKeys "tast3" & Chr(13)

WScript.Sleep 2000

 

WshShell.SendKeys "tast2" & Chr(13)

WScript.Sleep 2000

 

WshShell.SendKeys "per" & Chr(13)

WScript.Sleep 2000

 

' ENTER-tasten = Chr(13)

WshShell.SendKeys "tast enter" & Chr(13)

WScript.Sleep 2000

 

' Bruk Scripting.FileSystemObject for å hente ut data fra en tekstfil, dersom det er dét du forsøker å gjøre her

WshShell.SendKeys "teksten som ligger i fil c:\temp\text.txt" & Chr(13)

WScript.Sleep 2000

 

' Avslutt applikasjon/tilkobling

WshShell.SendKeys "quit" & chr(13)

Lenke til kommentar
Ja jeg tengte på å hente ut tekst fra en tekst fil og sende det som står på linje 2 feks som du gjør med "WshShell.SendKeys" og deretter enter.

6600429[/snapback]

Da kan du legge til følgende kode (helt nederst i VBS-filen):

Function ReadFile(sFile)

 

    ' Objektet vi benytter for å lese tekstfiler

    Set oFS = CreateObject("Scripting.FileSystemObject")

 

    ' Sjekk hvorvidt filen samt filbanen eksisterer

    If oFS.FileExists(sFile) = True Then

       

        ' Åpne tekstfil for lesing (1)

        Set oTextStream = oFS.OpenTextFile(sFile, 1)

       

        ' Returner hele innholdet i tekstfilen

        ReadFile = oTextStream.ReadAll

       

        ' Lukk tekststrøm

        oTextStream.Close

       

        ' Rydd opp

        Set oTextStream = Nothing

   

    End If

   

    ' Rydd opp

    Set oFS = Nothing

 

End Function

Deretter kan du simpelthen gjøre således for å lese inn innholdet i en fil:

WshShell.SendKeys ReadFile("C:\Test.txt") & Chr(13)

WScript.Sleep 2000

Lenke til kommentar

Takker så meget igjen aadnk :thumbup:

 

Beklager at jeg maser på deg igjen men...

 

Du skriver at jeg må legge koden for å lese inn tekst filen nederst i scriptet, men skal koden for å sende teksten ligge etter denne igjen, eller kan den ligge hvor som helst i scriptet.

 

Er det mulig å sende en og en linje fra tekstfilen?.

Jeg har et senario der jeg ønsker å først sende linje 2 fra tekst filen, deretter div andre ting, så linje 5 fra filen osv.

Lar det seg gjøre, eller må det deles opp i separate tekstfiler og leses inn hver for seg?.

Er det i såfall bare å bruke ReadFile flere ganger for å lese inn flere filer?.

Lenke til kommentar
Du skriver at jeg må legge koden for å lese inn tekst filen nederst i scriptet, men skal koden for å sende teksten ligge etter denne igjen, eller kan den ligge hvor som helst i scriptet.

6603469[/snapback]

Den kan godt være plassert hvor det skal være, men nederst er nok en grei plassering.

 

Er det mulig å sende en og en linje fra tekstfilen?

6603469[/snapback]

Last inn hele tekstfilen og bruk Split() til å dele opp strengen i linjer:

aLines = Split(ReadFile("C:\Test.txt"), vbNewLine)

Deretter kan du simpelthen avlese hver linje i filen således:

MsgBox aLines(0) ' 0 = første linje, 1 = andre linje, etc.
Lenke til kommentar

Blir det ca sånn :dontgetit:

 

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "telnet.exe"
WScript.Sleep 5000

WshShell.SendKeys "open 192.168.0.1" & Chr(13)
WScript.Sleep 5000

WshShell.SendKeys "passord" & Chr(13)
WScript.Sleep 2000

aLines = Split(ReadFile("C:\Test.txt"), vbNewLine)

WshShell.SendKeys MsgBox aLines(0) & Chr(13)
WScript.Sleep 2000 

WshShell.SendKeys "tast3" & Chr(13)
WScript.Sleep 2000

WshShell.SendKeys "tast2" & Chr(13)
WScript.Sleep 2000

WshShell.SendKeys MsgBox aLines(3) & Chr(13)
WScript.Sleep 2000 

WshShell.SendKeys "per" & Chr(13)
WScript.Sleep 2000

WshShell.SendKeys MsgBox aLines(5) & Chr(13)
WScript.Sleep 2000 

WshShell.SendKeys "enter" & Chr(13)
WScript.Sleep 2000


WshShell.SendKeys "quit" & chr(13)



Function ReadFile(sFile)

   Set oFS = CreateObject("Scripting.FileSystemObject")

   If oFS.FileExists(sFile) = True Then
      
       Set oTextStream = oFS.OpenTextFile(sFile, 1)
      
       ReadFile = oTextStream.ReadAll
      
       oTextStream.Close
      
       Set oTextStream = Nothing
  
   End If
  
   Set oFS = Nothing

End Function

Lenke til kommentar
Er det mulig å få en tekst boks til å poppe opp der jeg skriver inn noe og klikker ok, deretter blir den sendt per telnet?.

6607751[/snapback]

Såklart. Bruk InputBox:

WshShell.SendKeys InputBox("Skriv en tekst") & Chr(13)

Ellers kan du sikert ta en titt på Wikibooks for å lære deg litt Visual Basic.

Endret av aadnk
Lenke til kommentar

Inputbox er eneste brukerinterface inkludert i vbs. Imidlertid, ved hjelp av IE kan man lage brukerinterfacer som man vil ha dem i vbs. Her følger test.vbs jeg har laget for å demonstrere en enkel meldingsboks man kan bruke i vbs:

 

Set oIE = WScript.CreateObject("InternetExplorer.Application")
oIE.left=100: oIE.top = 100: oIE.height = 100: oIE.width = 220
oIE.menubar = 0: oIE.toolbar = 0: oIE.statusbar = 0
path = WScript.ScriptFullName
path = Left(path, InstrRev(path, "\"))
oIE.navigate path & "filbox.htm"
oIE.visible = 1
Do While (oIE.Busy)  
  WScript.Sleep 100   
Loop
Set WshShell = WScript.CreateObject("WScript.Shell")
Set knappen = oIE.document.getElementById ("knapp")
Set knappen.onclick = GetRef ("sende")
Sub sende
Set feltet = oIE.document.getElementById ("felt")
wscript.sleep 1000
wshshell.run ("notepad.exe")
wscript.sleep 1000
WshShell.SendKeys feltet.value  
End sub
ready = false
Do Until ready
 WScript.Sleep 100  
Loop

 

Selve brukerinterfacen er filbox.htm som følger her:

 

<title> Min InputBox</title>
Data:<input type = text size = 10 name = felt>
<input type = button name = knapp value = Send>

 

Lagre filbox.htm i samme mappe som test.vbs.

Dobbelklikk test.vbs, tast inn data i meldingsboksa og klikk på sendknappen, og data kommer opp i notepad.exe.

Endret av backup
Lenke til kommentar

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...