Ping machines from list and update .txt file

Posted on 2009-07-07
Medium Priority
Last Modified: 2013-11-27
Hi Guys,

I need some help getting started with this, I have only just downloaded VB E 2008 and realised I cant update my old VB6 apps with it. So I need to start form scratch with this one.

I need a simple application to ping a list of machines listed in a .txt file, then update the .txt to file to state if ping was succesful or not.

I have got about 500 machines on a network at work and I want to see how many are left on through the night by running this, if they are on I will send a shutdown commmand. Before you ask they are not on a domain so I cant do this via a GP.

As always thanks for your help guys.
Question by:pnorris99
LVL 28

Accepted Solution

strickdd earned 640 total points
ID: 24794316
1) Use a stream reader to read your list of computers to ping
-- http://msdn.microsoft.com/en-us/library/yw67h925%28VS.80%29.aspx

2) Send a ping to the computer listed on each line as you loop through the stream reader
-- http://www.aspnettutorials.com/tutorials/network/net-ping-aspnet2-vb.aspx (vb example at the bottom)

3) Store the ping results for active computers to an arraylist (or text file and stream read again)

4) Loop through arraylist (or text file via stream reader) and send shutdown command.
LVL 41

Assisted Solution

graye earned 640 total points
ID: 24843446
If you're interested in a complete example in VB.Net, take a look at the following:

Assisted Solution

emresamisuzer earned 640 total points
ID: 24893673
I have written a small program to like you need. I think it will help you... This won't update the text file but create an xml report about the ping results. You need to have a dataset also!

<?xml version="1.0" standalone="yes"?>
<PingTest xmlns="http://tempuri.org/PingTest.xsd">
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.ComponentModel
Public Class Form1
    Private p As New Ping
    Private WithEvents workers As New List(Of BackgroundWorker)
    Private sets As New List(Of PingTest)
    Private hosts As New Hashtable
    Private cancel As Boolean = True
    Private Function PingIt(ByVal host As String) As PingReply
        Return p.Send(host)
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ofd As New OpenFileDialog
        ofd.Filter = "Text Files (*.txt)|*.txt"
        If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
            If ofd.FileName.Length > 0 Then
                If ofd.FileName.EndsWith(".txt") Then
                    TextBox1.Text = ofd.FileName
                End If
            End If
        End If
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Label3.Text = Now.ToString
        Button2.Enabled = False
        Button3.Enabled = Not Button2.Enabled
        cancel = False
            Dim hs() As String = System.IO.File.ReadAllText(TextBox1.Text).Split(vbLf)
            For h As Integer = 0 To hs.Length - 1
                If hs(h).Trim.Length > 0 Then
                    hosts.Add(h, hs(h).Trim)
                    workers.Add(New BackgroundWorker())
                    sets.Add(New PingTest)
                    AddHandler workers(h).DoWork, AddressOf DoJob
                    workers(h).RunWorkerAsync(New Object() {h})
                End If
        Catch ex As Exception
            Button2.Enabled = True
            Button3.Enabled = Not Button2.Enabled
        End Try
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        cancel = True
        Button2.Enabled = True
        Button3.Enabled = Not Button2.Enabled
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        For s As Integer = 0 To sets.Count - 1
            sets(s).WriteXml(My.Application.Info.DirectoryPath & "\" & hosts(s) & ".xml")
    End Sub
    Private Sub DoJob(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
        While Not cancel
            Dim rep As PingReply = PingIt(hosts(e.Argument(0)))
            sets(e.Argument(0)).Pings.AddPingsRow(Now, hosts(e.Argument(0)), rep.RoundtripTime, rep.Status = IPStatus.Success)
        End While
    End Sub
End Class

Open in new window


Author Closing Comment

ID: 31600566
Thanks guys

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
An ASP.NET Web Form User Control is not newly introduced in ASP.NET. In fact, it was an old technology yet still playing a role to generate web content, especially when we want to use it to have a better and easy way to control part of the web conte…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

627 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question