MrDeveloper
asked on
Want to ping and telnet from an asp.net datagrid on the client side
Hello, i have a grid that contains multiple columns, one of which contains an ip address (for switches...).
I'd like to have one button that opens a window and pings the ip address and another that telnets to it. I realize that this needs to happen on the client side and wonder if I need to use javascript or something along those lines?
I'm open to workarounds... Would it be better to ping it from the server side and put the output into an html page and direct the user to it or something? I have no idea what kind of workaround there might be for telnetting.
Any help would be very greatly appreciated!
I'd like to have one button that opens a window and pings the ip address and another that telnets to it. I realize that this needs to happen on the client side and wonder if I need to use javascript or something along those lines?
I'm open to workarounds... Would it be better to ping it from the server side and put the output into an html page and direct the user to it or something? I have no idea what kind of workaround there might be for telnetting.
Any help would be very greatly appreciated!
I don't think that you can run exe on the client side due to the security settings. Maybe you can install an ActiveX on the client computer
ASKER
I thought of a workaround for telnet:
telnet://www.yahoo.com
I can just do a response.redirect("telnet: //" & Ipaddress) or something along those lines. Ping doesn't seem to work from the browser though... I guess a hack would be to create a shell command like:
ping 10.1.1.1 > PingResults.txt
and try to response.redirect to that file on the server. Definitely a hack, but I'm going to try that
telnet://www.yahoo.com
I can just do a response.redirect("telnet:
ping 10.1.1.1 > PingResults.txt
and try to response.redirect to that file on the server. Definitely a hack, but I'm going to try that
ASKER
Well, the ping seems to work pretty consistently (writing ping results to a text file, redirecting to it), but the telnet://IpAddress doesn't work - gives me a standard "The page cannot be displayed" and never redirects anywhere. Any thoughts or other ideas to get that working? I'm definitely still open to a better way to do the pinging too
Thanks!
Thanks!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Here's a link on how to do telnet from .Net (it's not easy)
https://www.experts-exchange.com/questions/20815562/HIdden-telnet-session.html
here's how you can ping from the server (using code-behind), store the results to a variable and then do something with the string
Process myCmd = null;
ProcessStartInfo qOptions = new ProcessStartInfo(@"cmd.exe
qOptions.RedirectStandardO
qOptions.UseShellExecute = false; // set to false to enable logging
myCmd = Process.Start(qOptions);
StreamReader str = myCmd.StandardOutput;
Response.Write(str.ReadToE
myCmd.WaitForExit();
ASKER
Hey Tad,
First of all, thanks very much for the ping code. I used:
Path = "c:\inetpub\wwwroot\PingRe sults.txt" 'on the server
'capture the ip address in the row that is selected
IpAddress = grd.SelectedItem.Cells(3). Text
'write to a file
PingCommand = "ping " & IpAddress & " > " & Path
Shell(PingCommand, AppWinStyle.Hide)
Response.Redirect(Path)
But i like yours much better... So, using telnet://[ip address] will not work from a browser? Man, you are not kidding - that class provided in the other article is complex! I can't even tell if it's designed to allow an asp.net client browser to telnet to an ip or not.
Thank you, i'm going to look for some kind of workaround for telnet...
First of all, thanks very much for the ping code. I used:
Path = "c:\inetpub\wwwroot\PingRe
'capture the ip address in the row that is selected
IpAddress = grd.SelectedItem.Cells(3).
'write to a file
PingCommand = "ping " & IpAddress & " > " & Path
Shell(PingCommand, AppWinStyle.Hide)
Response.Redirect(Path)
But i like yours much better... So, using telnet://[ip address] will not work from a browser? Man, you are not kidding - that class provided in the other article is complex! I can't even tell if it's designed to allow an asp.net client browser to telnet to an ip or not.
Thank you, i'm going to look for some kind of workaround for telnet...
ASKER
I still can't understand why I can type telnet://ip into my browser address line and it will telnet to that, but if I do response.redirect("telnet: //ip"), I get a page not found kind of thing.
ASKER
Hmm... found a way to make telnet work - <a href="telnet://www.yahoo.com">Telnet</a
Works great... Anybody know how to make a similar one for pinging?
Works great... Anybody know how to make a similar one for pinging?
ASKER
Hey TAD, I get "StandardOut has not been redirected. " when I use your ping process code
ASKER
Boy, what a hack this is, but it works... I wrote a quick sp to return the data, then called it from my .net web form and pumped the output into a grid. Both are posted below in case somebody else needs a way to do this and finds this question.
Please give me some more detail on your ping solution TAD. Your way is unquestionably better, but this hack will allow me to meet the deadline and I can update them later with a better fix.
Thanks
Private Sub PopulateGrid()
Dim cmd As SqlCommand, dr As SqlDataReader
cmd = New SqlCommand("GetPingResults ", Session("cn"))
cmd.CommandType = CommandType.StoredProcedur e
cmd.Parameters.Add("@Ip", Session("Ip"))
dr = cmd.ExecuteReader
With grd
.DataSource = dr
.DataBind()
End With
dr.Close()
End Sub
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetPing Results]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[GetPingResults]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE GetPingResults @Ip varchar(30)
AS
DECLARE @strCmd VARCHAR(60)
SELECT @strCmd = 'ping ' + @Ip
EXEC Master..xp_cmdShell @strCmd
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Please give me some more detail on your ping solution TAD. Your way is unquestionably better, but this hack will allow me to meet the deadline and I can update them later with a better fix.
Thanks
Private Sub PopulateGrid()
Dim cmd As SqlCommand, dr As SqlDataReader
cmd = New SqlCommand("GetPingResults
cmd.CommandType = CommandType.StoredProcedur
cmd.Parameters.Add("@Ip", Session("Ip"))
dr = cmd.ExecuteReader
With grd
.DataSource = dr
.DataBind()
End With
dr.Close()
End Sub
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetPing
drop procedure [dbo].[GetPingResults]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE GetPingResults @Ip varchar(30)
AS
DECLARE @strCmd VARCHAR(60)
SELECT @strCmd = 'ping ' + @Ip
EXEC Master..xp_cmdShell @strCmd
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
ASKER
I'm going to stick with my hack here, but TAD_, you comments were helpful and kind of what I ended up doing. Thanks!
If it's a telnet component you're looking for, you could try:
http://www.whisperstream.com/software/commlib/
I dunno if they have any other components, but the telnet one they have is okay and seems to be free and not expire (always a bonus).
http://www.whisperstream.com/software/commlib/
I dunno if they have any other components, but the telnet one they have is okay and seems to be free and not expire (always a bonus).