Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1446
  • Last Modified:

VBS to HTA Conversion

I want to convert the below code to HTA.
dim oshell
strip = Inputbox("Enter the IP Address", "IP Address")
strname=inputbox("Enter the Username", "Username")
strpswd=inputbox("Enter the Password", "Password")
strdesc=inputbox("Enter Description", "Description")
set oshell = Wscript.createobject ("Wscript.shell")
oshell.run "telnet " & strip
oshell.appactivate "Telnet"
Wscript.sleep 100
oshell.appactivate "Telnet " & strip
oshell.sendkeys strname
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys strpswd
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys "interface Serial 0/0/0"
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys "description " & strdesc
oshell.sendkeys "{ENTER}"
set oshell = Nothing

Open in new window

0
Dhiraj Mutha
Asked:
Dhiraj Mutha
  • 6
  • 5
  • 2
1 Solution
 
sirbountyCommented:
Here's the basics...ideally for something professional looking, you'd want to modify the gui - adding tables, colors, etc.  There are plenty of sites with html examples, if you don't know html (I'm not strong in that area).

I've included a validate sub to allow you to verify the data input.
For example, you could add a regular expression to ensure that the ip address consists of 3 periods.  You could also test that none of the numbers exceed a valid range, or go above 255...

Same could be done for the other fields.
Have fun!
<html> 
<head>
   <title>telnet script</title>
</head>
 
<script Language="VBScript">
 
Sub Main()
dim oshell
strip = ip.Value
strname=username.Value
strpswd=password.Value
strdesc=desc.value
set oshell = Wscript.createobject ("Wscript.shell")
oshell.run "telnet " & strip
oshell.appactivate "Telnet"
Wscript.sleep 100
oshell.appactivate "Telnet " & strip
oshell.sendkeys strname
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys strpswd
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys "interface Serial 0/0/0"
Wscript.sleep 100
oshell.sendkeys "{ENTER}"
Wscript.sleep 100
oshell.sendkeys "description " & strdesc
oshell.sendkeys "{ENTER}"
set oshell = Nothing
End Sub
 
Sub ValidateDetails()
  'Rules to validate ip.Value, username.Value, password.Value & desc.Value
 
  'Now run 'your' code...
  Main()
End Sub
 
</script>
 
<body>
Enter the IP Address:<input type="text" name="ip"/><br />
Enter the Username:<input type="text" name="username" /><br />
Enter the Password:<input type="text" name="password" /><br />
Enter Description:<input type="text" name="desc" /><br />
<center>
  <input type="button" onClick="ValidateDetails" value="Submit">
</center>
</body>
</html>

Open in new window

0
 
Dhiraj MuthaAuthor Commented:
Hi, thanks for the update. But this is what i have tried and getting the below error.
Error.jpeg
0
 
sirbountyCommented:
Remove wscript from your code line:
set oshell = Wscript.createobject ("Wscript.shell")

to read:
set oshell =createobject ("Wscript.shell")
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Dhiraj MuthaAuthor Commented:
Now i amd getting the same error on Line # 16.
0
 
kelvinightCommented:
i think wscript.sleep is not working in HTA, correct me if im wrong
0
 
kelvinightCommented:
well, i removed all Wscript.sleep 100 lines from sirbunty's post, and it run without error
0
 
sirbountyCommented:
Correct - you cannot use wscript.sleep as it's a method of wsh, not hta.
You could use a timer instead...
However, with 100 ms delays, is it needed?
Try it without:


<html> 
<head>
   <title>telnet script</title>
</head>
 
<script Language="VBScript">
 
Sub Main()
dim oshell
strip = ip.Value
strname=username.Value
strpswd=password.Value
strdesc=desc.value
set oshell = Wscript.createobject ("Wscript.shell")
oshell.run "telnet " & strip
oshell.appactivate "Telnet"
oshell.appactivate "Telnet " & strip
oshell.sendkeys strname
oshell.sendkeys "{ENTER}"
oshell.sendkeys strpswd
oshell.sendkeys "{ENTER}"
oshell.sendkeys "interface Serial 0/0/0"
oshell.sendkeys "{ENTER}"
oshell.sendkeys "description " & strdesc
oshell.sendkeys "{ENTER}"
set oshell = Nothing
End Sub
 
Sub ValidateDetails()
  'Rules to validate ip.Value, username.Value, password.Value & desc.Value
 
  'Now run 'your' code...
  Main()
End Sub
 
</script>
 
<body>
Enter the IP Address:<input type="text" name="ip"/><br />
Enter the Username:<input type="text" name="username" /><br />
Enter the Password:<input type="text" name="password" /><br />
Enter Description:<input type="text" name="desc" /><br />
<center>
  <input type="button" onClick="ValidateDetails" value="Submit">
</center>
</body>
</html>

Open in new window

0
 
Dhiraj MuthaAuthor Commented:
I will try the above code and you all know about this tomorrow.
0
 
Dhiraj MuthaAuthor Commented:
The code is working without any errors. But when i try to run the script it opens Telnet 10.10.10.20 and enters the username and password and then stops there. If you manually press enter it does not working it says "Incorrect Password". I think thats why the Sleep command is required. Please check.
0
 
sirbountyCommented:
Try this...it'll generate a temporary script file to perform the sleep routine...
<html> 
<head>
   <title>telnet script</title>
</head>
 
<script Language="VBScript">
 
Sub Main()
dim oshell
strip = ip.Value
strname=username.Value
strpswd=password.Value
strdesc=desc.value
set oshell = Wscript.createobject ("Wscript.shell")
oshell.run "telnet " & strip
oshell.appactivate "Telnet"
Wait 100
oshell.appactivate "Telnet " & strip
oshell.sendkeys strname
Wait 100
oshell.sendkeys "{ENTER}"
Wait 100
oshell.sendkeys strpswd
Wait 100
oshell.sendkeys "{ENTER}"
Wait 100
oshell.sendkeys "interface Serial 0/0/0"
Wait 100
oshell.sendkeys "{ENTER}"
Wait 100
oshell.sendkeys "description " & strdesc
oshell.sendkeys "{ENTER}"
set oshell = Nothing
End Sub
 
Sub ValidateDetails()
  'Rules to validate ip.Value, username.Value, password.Value & desc.Value
 
  'Now run 'your' code...
  Main()
End Sub
 
Sub Wait(ms) 
  Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
  If Not objFSO.FileExists("wait.vbs") Then 
    Set objFile = objFSO.CreateTextFile("wait.vbs")
    objFile.WriteLine "wscript.sleep wscript.arguments(0)"
    objFile.Close
  End If
 
  CreateObject("WScript.Shell").Run "wait.vbs " & ms,1 , True
End Sub
 
</script>
 
<body>
Enter the IP Address:<input type="text" name="ip"/><br />
Enter the Username:<input type="text" name="username" /><br />
Enter the Password:<input type="text" name="password" /><br />
Enter Description:<input type="text" name="desc" /><br />
<center>
  <input type="button" onClick="ValidateDetails" value="Submit">
</center>
</body>
</html>

Open in new window

0
 
Dhiraj MuthaAuthor Commented:
Thanks for the relpy... I will have a check on this and update you ASAP.
0
 
Dhiraj MuthaAuthor Commented:
That worked absoultely fine. Only one problem.... it is creating a Wait.vbs file... that should get deleted once i close the HTA is it possible.
0
 
sirbountyCommented:
1) Move the objFSO declaration from line 44 to the line immediately following the opening script tag <script>.

2) Just after line 33 (line 34), enter the following line (line 34, the End Sub line will become line 35).

    If objFSO.FileExists("wait.vbs") Then objFSO.DeleteFile "wait.vbs"

0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 6
  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now