Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

nbtstat and Access

5 views
Skip to first unread message

NCI

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to
I'm searching for anyone that knows of some VB code I can slap into a DB
that will take an IP (or Host name) entered into a DB and, at the press
of a button, go and do an nbtstat -(a or A) on it? I've tried calling
it from a Shell and the shell just flashes on the screen (since the
returned info is so fast and doesn't have a PAUSE command). Any ideas?

--- MIcah


Tom van Stiphout

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to
On Thu, 10 Jun 1999 08:04:34 -0400, NCI <hoff...@pop.nci.nih.gov>
wrote:

If a pause is all you want to achieve, you can create a batch file on
the fly and execute that. Something like:
nbtstat -A 127.0.0.1
pause

-Tom.

Micah Hoffman

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to
Well, I'll need to get field data from the DB and then use the nbtstat
-a/A command. I am unfamiliar with how to get Access to modify a batch
file. I have also searched a number of Access and VB WWW pages for
sample code on this (with no luck).

--- Micah

jlwest

unread,
Jun 10, 1999, 3:00:00 AM6/10/99
to
You can use the command "Open" and then "Print" the data into the batch file
that you want to run. Somewhat similar to the following. I got the idea
from the MS knowledge base article Q182606, that shows you how to create a
shortcut on your desktop.

The following is probably similar to what you want.

You can even put a line to have the batch file itself. (you could do this in
Access though)

Open "NetCmd.bat" For Output As #1
Print #1, "**Insert commands**"
Print #1, "**Insert commands**"
Print #1, "nbtstat -r."
Print #1, "Echo Close this DOS window "
Print #1, "Echo by clicking on the X"
Print #1, "Echo at the top right..."
Print #1, "Echo :)"
Print #1, "Del " & "NetCmd.bat"
Close #1

Of course insert your commands where I placed **Insert commands**

I hope this helps.

Jesse

Micah Hoffman <hoff...@pop.nci.nih.gov> wrote in message
news:375FDF50...@pop.nci.nih.gov...

Cliff

unread,
Jun 11, 1999, 3:00:00 AM6/11/99
to
That's a lot of work and a maintenance nightmare. What if there is a
policy in effect that denies a command shell? I don't know the answer to
that but it just occurred to me to ask. <g> Anyone?

Let's go back to the original problem. Are you trying to read the MAC
address or the name table MIcah? I can help you with the MAC address.
Someone just recently posted that code.

--
-Cliff
Views expressed are my own and not necessarily those of my employer
Concordia Net, Inc. When replying via email please use; cwheat at concordia
dot net not
root@localhost

jlwest wrote in message ...

Micah Hoffman

unread,
Jun 11, 1999, 3:00:00 AM6/11/99
to
Resolving the MAC from the IP or Host was my primary intention. Thanks
to all of you for your help.

--- MIcah

Cliff

unread,
Jun 11, 1999, 3:00:00 AM6/11/99
to
Sorry for the long repost everyone. Anyway, here's how to get the MAC
address.

--
-Cliff
Views expressed are my own and not necessarily those of my employer
Concordia Net, Inc. When replying via email please use; cwheat at concordia
dot net not
root@localhost

Micah Hoffman wrote in message <376137E6...@pop.nci.nih.gov>...


>Resolving the MAC from the IP or Host was my primary intention. Thanks
>to all of you for your help.
>
>--- MIcah
>


>> *** Repost ***
From: "Arvin Meyer" <a...@m.com>
Newsgroups: comp.databases.ms-access
Subject: Re: Retrieving the MAC address
Date: Tue, 8 Jun 1999 11:49:32 -0400
Organization: Broadband Network Services, Inc.
Lines: 175
Message-ID: <7jje2g$o8q$1...@esinet2.esinet.net>
References: <375D1830...@ind.tno.nl>
NNTP-Posting-Host: dialin32.max4048.esinet.net
X-Trace: esinet2.esinet.net 928856976 24858 12.5.49.32 (8 Jun 1999 15:49:36
GMT)
X-Complaints-To: ab...@bnsi.net
NNTP-Posting-Date: 8 Jun 1999 15:49:36 GMT
X-Newsreader: Microsoft Outlook Express 4.72.3110.1
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Xref: cyclone1.gnilink.net comp.databases.ms-access:10807
Here's Chucks post:
From http://www.mvps.org/vbnet/code/network/macaddress.htm. (I haven't had
time to test this yet, but
http://www.mvps.org/vbnet/ has always provided me with good code in the
past!
Put this all in it's own module, then in your form, set the field's
default value to =GetMACAddress()
Option Explicit
Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const HEAP_ZERO_MEMORY As Long = &H8
Public Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
Public Const NCBRESET As Long = &H32
Public Type NET_CONTROL_BLOCK 'NCB
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte ' Reserved, must be 0
ncb_event As Long
End Type
Public Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type
Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type
Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type
Public Declare Function Netbios Lib "netapi32.dll" _
(pncb As NET_CONTROL_BLOCK) As Byte
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, ByVal _
hpvSource As Long, ByVal _
cbCopy As Long)
Public Declare Function GetProcessHeap Lib "kernel32" () As Long
Public Declare Function HeapAlloc Lib "kernel32" _
(ByVal hHeap As Long, ByVal dwFlags As Long, _
ByVal dwBytes As Long) As Long
Public Declare Function HeapFree Lib "kernel32" _
(ByVal hHeap As Long, _
ByVal dwFlags As Long, _
lpMem As Any) As Long

Public Function GetMACAddress() As String
'retrieve the MAC Address for the network controller
'installed, returning a formatted string
Dim tmp As String
Dim pASTAT As Long
Dim NCB As NET_CONTROL_BLOCK
Dim AST As ASTAT
'The IBM NetBIOS 3.0 specifications defines four basic
'NetBIOS environments under the NCBRESET command. Win32
'follows the OS/2 Dynamic Link Routine (DLR) environment.
'This means that the first NCB issued by an application
'must be a NCBRESET, with the exception of NCBENUM.
'The Windows NT implementation differs from the IBM
'NetBIOS 3.0 specifications in the NCB_CALLNAME field.
NCB.ncb_command = NCBRESET
Call Netbios(NCB)
'To get the Media Access Control (MAC) address for an
'ethernet adapter programmatically, use the Netbios()
'NCBASTAT command and provide a "*" as the name in the
'NCB.ncb_CallName field (in a 16-chr string).
NCB.ncb_callname = "* "
NCB.ncb_command = NCBASTAT
'For machines with multiple network adapters you need to
'enumerate the LANA numbers and perform the NCBASTAT
'command on each. Even when you have a single network
'adapter, it is a good idea to enumerate valid LANA numbers
'first and perform the NCBASTAT on one of the valid LANA
'numbers. It is considered bad programming to hardcode the
'LANA number to 0 (see the comments section below).
NCB.ncb_lana_num = 0
NCB.ncb_length = Len(AST)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
Or HEAP_ZERO_MEMORY, NCB.ncb_length)
If pASTAT = 0 Then
Debug.Print "memory allocation failed!"
Exit Function
End If
NCB.ncb_buffer = pASTAT
Call Netbios(NCB)
CopyMemory AST, NCB.ncb_buffer, Len(AST)
tmp = Format$(Hex(AST.adapt.adapter_address(0)), "00") & " " & _
Format$(Hex(AST.adapt.adapter_address(1)), "00") & " " & _
Format$(Hex(AST.adapt.adapter_address(2)), "00") & " " & _
Format$(Hex(AST.adapt.adapter_address(3)), "00") & " " & _
Format$(Hex(AST.adapt.adapter_address(4)), "00") & " " & _
Format$(Hex(AST.adapt.adapter_address(5)), "00")

HeapFree GetProcessHeap(), 0, pASTAT
GetMACAddress = tmp
End Function


0 new messages