Solved

Grabbing the ip address instead of computer name

Posted on 2009-06-30
9
193 Views
Last Modified: 2012-05-07
Hi guys,

I have the following batch file called check_services.bat

Syntax:

check_services.bat <computername>

Currently, what happens is that the computer name is used for the sc command part, for example:

sc \\%1 query McAfeeFramework

However, what I want to do is the following:

check_services.bat <computername>

then find out the ip address of the computername entered, and use the ip address for

sc \\%1 query McAfeeFramework
sc \\%1 query EnterceptAgent
sc \\%1 query AeXNSClient
sc \\%1 query McShield

instead of %1 (which is the computer name)

Any help greatly appreciated.

check_services.bat <computername>

@echo off

@echo Checking the following 4 services on a machine %1 .....
 

rem check_services.bat <computername>

ping -n 1 %1 >nul 2>&1

if %errorlevel%==0 (

   echo %1: Up

) else (

   echo %1: Down

)
 

sc \\%1 query McAfeeFramework

sc \\%1 query EnterceptAgent

sc \\%1 query AeXNSClient

sc \\%1 query McShield

Open in new window

0
Comment
Question by:Simon336697
  • 5
  • 4
9 Comments
 
LVL 14

Expert Comment

by:Giovanni Heward
Comment Utility

@echo off

echo Checking the following 4 services on a machine %1 .....

 

rem check_services.bat <computername>

for /f "tokens=1-6 delims=[.] " %%a in ('ping %1 -n 1 ^| find "["') do set ip=%%c.%%d.%%e.%%f

ping -n 1 %1 >nul 2>&1

if %errorlevel%==0 (

   echo %1 [%ip%]: Up

) else (

   echo %1 [%ip%]: Down

)

sc \\%ip% query McAfeeFramework

sc \\%ip% query EnterceptAgent

sc \\%ip% query AeXNSClient

sc \\%ip% query McShield

Open in new window

0
 
LVL 1

Author Comment

by:Simon336697
Comment Utility
HI x66_x72_x65_x65,
Mate that WORKS brilliantly.
I dont know if i can ask this of you, but:

Currently, this works against a given computer name, for example:

script.bat <computername>

Is it possible somehow to modify this, so that:

1) You could run the script against a list of computers in a text file?
eg.
script.bat c:\computers.txt
0
 
LVL 14

Expert Comment

by:Giovanni Heward
Comment Utility
The following is what you're looking for...

This script also writes a log to availability.txt, showing hostname, ip address, and up/down state.


@echo off

if [%1]==[] (

echo useage: script [computers.txt]

echo         computers.txt contains hostname or ip address, one per line.

goto :eof

)

setlocal enabledelayedexpansion

for /f %%c in (%1) do (

  call :GETINFO %%c

  echo %%c [!ip!]: !Availability!>>availability.txt

)

goto :eof

 

:GETINFO

if [%1]==[] goto :eof

Set Availability=

for /f "tokens=2 delims=[]" %%a in ('ping %1 -n 1 ^| find "["') do set ip=%%a

ping %ip% -n 2 -w 100 >nul 2>&1  

If %errorlevel%==1 goto DOWN

 

echo %1 [%ip%]: Up

Set Availability=Up

sc \\%ip% query McAfeeFramework

sc \\%ip% query EnterceptAgent

sc \\%ip% query AeXNSClient

sc \\%ip% query McShield

goto :eof

 

:DOWN

echo %1 [%ip%]: Down

Set Availability=Down

Open in new window

0
 
LVL 1

Author Comment

by:Simon336697
Comment Utility
Hi x66_x72_x65_x65,
Champion.
x66_x72_x65_x65,
The output of running your latest great script is:

script.bat computers.txt
where computers.txt (serverA is pingable, serverB is not)
serverA
serverB
serverA

Output is:

script.bat computers.txt

serverA [10.1.2.3]: Up
serverB [10.1.2.3]: Up
serverA [10.1.2.3]: Up

and

availability.txt

serverA [10.1.2.3]: Up
serverB [10.1.2.3]: Up
serverA [10.1.2.3]: Up

So,

Somehow, it is returning the same ip address for every computer listed in computers.txt, and reporting the Availability as Up, even though it is Down.
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 14

Expert Comment

by:Giovanni Heward
Comment Utility
Forgot to clear the variable... try this.

@echo off

if [%1]==[] (

echo useage: script [computers.txt]

echo         computers.txt contains hostname or ip address, one per line.

goto :eof

)

setlocal enabledelayedexpansion

for /f %%c in (%1) do (

  call :GETINFO %%c

  echo %%c [%ip%]: !Availability!>>availability.txt

)

goto :eof

 

:GETINFO

if [%1]==[] goto :eof

Set Availability=

for /f "tokens=2 delims=[]" %%a in ('ping %1 -n 1 -w 1000 ^| find "["') do (

set ip=%%a

set p=Checking the following 4 services on a machine %1 [%%a] .....

)

ping %ip% -n 2 -w 100 >nul 2>&1  

If %errorlevel%==1 goto DOWN

 

echo %1 [%ip%]: Up

Set Availability=Up

title %p% & echo %p%

sc \\%ip% query McAfeeFramework

sc \\%ip% query EnterceptAgent

sc \\%ip% query AeXNSClient

sc \\%ip% query McShield

set ip= & set p=

goto :eof

 

:DOWN

echo %1 [%ip%]: Down

Set Availability=Down

set ip= & set p=

Open in new window

0
 
LVL 1

Author Comment

by:Simon336697
Comment Utility
Hi mate,
Getting closer :>)

script.bat computers.txt

serverA [10.1.2.3]: Up
serverB [10.83.45.2 ]: Down
serverA [10.1.2.3]: Up

and

availability.txt

serverA [10.1.2.3]: Up
serverB  [10.1.2.3]: Down
serverA [10.1.2.3]: Up

In the command window, the offline machine is reporting correctly, but in availability.txt, it is taking on the value of serverA for its ip address

0
 
LVL 14

Accepted Solution

by:
Giovanni Heward earned 500 total points
Comment Utility
Okay, this should do it...


@echo off

if [%1]==[] (

echo useage: script [computers.txt]

echo         computers.txt contains hostname or ip address, one per line.

goto :eof

)

setlocal enabledelayedexpansion

for /f %%c in (%1) do (

  call :GETINFO %%c

  echo %%c [!ip!]: !Availability!>>availability.txt

  set ip= & set p=

)

goto :eof

 

:GETINFO

if [%1]==[] goto :eof

Set Availability=

for /f "tokens=2 delims=[]" %%a in ('ping %1 -n 1 -w 1000 ^| find "["') do (

set ip=%%a

set p=Checking the following 4 services on a machine %1 [%%a] .....

)

ping %ip% -n 2 -w 100 >nul 2>&1  

If %errorlevel%==1 goto DOWN

 

echo %1 [%ip%]: Up

Set Availability=Up

title %p% & echo %p%

sc \\%ip% query McAfeeFramework

sc \\%ip% query EnterceptAgent

sc \\%ip% query AeXNSClient

sc \\%ip% query McShield

goto :eof

 

:DOWN

echo %1 [%ip%]: Down

Set Availability=Down

Open in new window

0
 
LVL 1

Author Comment

by:Simon336697
Comment Utility
Thanks so much x86 and sorry about the delay.
0
 
LVL 1

Author Closing Comment

by:Simon336697
Comment Utility
Brilliant x66!
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

You may have already been in the need to update a whole folder stucture using a script. Robocopy does it well and even provides a list of non-updated files in a log (if asked to). Generally those files that were locked by a user or a process by the …
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

763 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

8 Experts available now in Live!

Get 1:1 Help Now