Solved

Ping machines from list and update .txt file

Posted on 2009-07-07
4
672 Views
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.
0
Comment
Question by:pnorris99
4 Comments
 
LVL 28

Accepted Solution

by:
strickdd earned 160 total points
Comment Utility
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.
0
 
LVL 41

Assisted Solution

by:graye
graye earned 160 total points
Comment Utility
If you're interested in a complete example in VB.Net, take a look at the following:
http://www.emmet-gray.com/Programs/PCsOnline.zip
0
 

Assisted Solution

by:emresamisuzer
emresamisuzer earned 160 total points
Comment Utility
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">
  <Pings>
    <Timestamp>2009-07-20T13:16:13.0986384+03:00</Timestamp>
    <Host>www.google.com</Host>
    <Response>189</Response>
    <Status>true</Status>
  </Pings>
</PingTest>
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

        workers.Clear()

        sets.Clear()

        hosts.Clear()

        Try

            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

            Next

        Catch ex As Exception

            MsgBox(ex.Message)

            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")

        Next

        MsgBox("Exported")

    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)

            System.Threading.Thread.Sleep(NumericUpDown1.Value)

        End While

    End Sub
 
 
 

End Class

Open in new window

0
 
LVL 1

Author Closing Comment

by:pnorris99
Comment Utility
Thanks guys
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
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…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

762 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

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now