Jump to content
Sign in to follow this  
realkiller

mac

Recommended Posts

BrettF
BrettF

that wont work if you have more subnets thatswhy i use a netbios request

You could:

#include <array.au3>
#include <Constants.au3>
Dim $line
$foo = Run(@ComSpec & " /c nbtstat -a ", "",@SW_Hide, $STDOUT_CHILD)
$count = 1
While 1
    $line &= StdoutRead($foo) & @CRLF
    If @error Then ExitLoop
    $count +=1
Wend

MsgBox (0, "", $line)

I still don't get the MAC Address with the CMD...

EDIT: Missed a bit...

Edited by Bert

Share this post


Link to post
Share on other sites
realkiller

if i use that i get the mac addres, and more information, i only wanna have the mac address number is that possible?

LAN-Verbindung:

Knoten-IP-Adresse: [172.29.28.138] Bereichskennung: []

NetBIOS-Namentabelle des Remotecomputers

Name Typ Status

---------------------------------------------

UP443 <00> EINDEUTIG Registriert

UP443 <20> EINDEUTIG Registriert

UP443 <03> EINDEUTIG Registriert

up543 <03> EINDEUTIG Registriert

MAC Adresse = 00-0F-1F-E3-6F-43

Edited by realkiller

Share this post


Link to post
Share on other sites
BrettF

This should show you how it is done. And it should get you on your merry way :)

#include <array.au3>
$output = "LAN-Verbindung:" & @LF & _
"Knoten-IP-Adresse: [172.29.28.138] Bereichskennung: []" & @LF & _
@LF & _
@LF & _
@LF & _
"NetBIOS-Namentabelle des Remotecomputers" & @LF & _
@LF & _
@LF & _
@LF & _
"Name Typ Status" & @LF & _
@LF & _
"---------------------------------------------" & @LF & _
@LF & _
"UP443 <00> EINDEUTIG Registriert" & @LF & _
"UP443 <20> EINDEUTIG Registriert" & @LF & _
"UP443 <03> EINDEUTIG Registriert" & @LF & _
@LF & _
"up543 <03> EINDEUTIG Registriert" & @LF & _
@LF & _
@LF & _
@LF & _
"MAC Adresse = 00-0F-1F-E3-6F-43" & @LF

MsgBox (0, "Before Strip all @LF", $output)
$output2 = StringReplace ($output, @LF, "")
MsgBox (0, "After Strip all @LF", $output2)
$output3 = StringSplit ($output2, "MAC Adresse", 1)
_ArrayDisplay ($output3)

$mac = StringReplace ($output3[2], "-", "")
$mac = StringReplace ($mac, "=", "")
$mac = StringReplace ($mac, " ", "")

MsgBox (0, "MAC Address", $mac)

Share this post


Link to post
Share on other sites
realkiller

the problem is it change at every workstation sow i made this but it doesn't filter everything, i need only the mac number

$ip = "up443"
#include <Constants.au3>
Dim $line
$foo = Run(@ComSpec & " /c nbtstat -a "&$ip, "",@SW_Hide, $STDOUT_CHILD)
$count = 1
While 1
    $line &= StdoutRead($foo) & @CRLF
    If @error Then ExitLoop
    $count +=1
Wend
$output2 = StringReplace ($line, @LF, $line)
$output3 = StringSplit ($output2, "MAC Adresse", 1)
$mac = StringReplace ($output3[2], "-", "")
$mac = StringReplace ($mac, "=", "")
$mac = StringReplace ($mac, " ", "")
MsgBox (0, "MAC Address", $mac)

Share this post


Link to post
Share on other sites
SkinnyWhiteGuy

Local $arComputers[3] = ["Lab-4", "Lab-5", "Lab-6"]

For $strComputer In $arComputers
    $line = ''
    $PID = Run(@ComSpec & " /c nbtstat -a " & $strComputer,@SystemDir, @SW_HIDE, 2)
    While Not @error
        $line &= StdoutRead($PID)
    WEnd

    If StringInStr($line, "MAC Address = ") Then
        $Mac = StringMid($line, StringInStr($line, "MAC Address = ")+StrLen("MAC Address = "),17)
        MsgBox(0, $strComputer, $Mac)
    Else
        MsgBox(0, $strComputer, "Host Offline")
    EndIf
Next

Just make sure you put the computer names you wish to see the Mac addresses for in the beginning array, and this should show a MsgBox of their MAC addresses, if they're online.

Also make sure to change the "MAC Addresss = " in all three places to match what language Windows you have, and all should work out.

Edited by SkinnyWhiteGuy

Share this post


Link to post
Share on other sites
BrettF
realkiller

The scripts works half the code is correct but it still doesn't show me a mac addres:(

Local $arComputers[3] = ["up443", "up579", "up125"]


For $strComputer In $arComputers
    $line = ''
    $PID = Run(@ComSpec & " /c nbtstat -a " & $strComputer,@SystemDir, @SW_HIDE, 2)
    While Not @error
        $line &= StdoutRead($PID)
    WEnd

    If StringInStr($line, "MAC Address = ") Then
$Mac = StringMid($line, StringInStr($line, "MAC Address = ")+StringLen("MAC Address = "),17)
        MsgBox(0, $strComputer, $Mac)
    Else
        MsgBox(0, $strComputer, "Host Offline")
    EndIf
Next

Share this post


Link to post
Share on other sites
realkiller

The scripts works half the code is correct but it still doesn't show me a mac addres:(

Local $arComputers[3] = ["up443", "up579", "up125"]


For $strComputer In $arComputers
    $line = ''
    $PID = Run(@ComSpec & " /c nbtstat -a " & $strComputer,@SystemDir, @SW_HIDE, 2)
    While Not @error
        $line &= StdoutRead($PID)
    WEnd

    If StringInStr($line, "MAC Address = ") Then
$Mac = StringMid($line, StringInStr($line, "MAC Address = ")+StringLen("MAC Address = "),17)
        MsgBox(0, $strComputer, $Mac)
    Else
        MsgBox(0, $strComputer, "Host Offline")
    EndIf
Next

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.