IP da placa de rede
Moderador: Moderadores
Re: IP da placa de rede
Desculpe sygecom
Mas seria o mac address da placa de rede.
Agora acabei lembrando de um outro fator.
Rodo os meus sistemas tudo via putty, mesmo que funcionasse em linux, acredito que nao iria funcionar pois iria pegar o mac address do servidor.
Isto tambem nao serve para mim.
[]s
claudio
Mas seria o mac address da placa de rede.
Agora acabei lembrando de um outro fator.
Rodo os meus sistemas tudo via putty, mesmo que funcionasse em linux, acredito que nao iria funcionar pois iria pegar o mac address do servidor.
Isto tambem nao serve para mim.
[]s
claudio
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: IP da placa de rede
Para MAC em Linux tem essa função que esta em anexo do Luiz Culik.
- Anexos
-
mac_linux.zip- (871 Bytes) Baixado 88 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Re: IP da placa de rede
Fiz a seguinte função para verificar o MAC da placa de rede:
Código: Selecionar todos
//Funçao para retornar o MAC da placa de rede
Function GetMAC
local mValor, cText
mValor:='GetMac /fo CSV > c:\scp10h\mac.txt | more '
Run (mValor)
IF !File( 'c:\scp10h\mac.txt' )
Return 'NIL'
ENDIF
cText := MemoRead( 'c:\scp10h\mac.txt' )
Return MemoLine( cText, 80, 3, , .t. )
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
-
cacg57
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 28 Nov 2009 13:06
- Localização: Florianopolis - SC
Re: IP da placa de rede
Sygecom
Utilizo o xHarbour 1.2.1 e acusa a falta da TIP.Lib.
Onde consigo a mesma.
Obrigado
Utilizo o xHarbour 1.2.1 e acusa a falta da TIP.Lib.
Onde consigo a mesma.
Obrigado
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: IP da placa de rede
Vc consegue na pasta LIB do seu xhb
Marcos Roberto.
Marcos Roberto.
Marcos Roberto
NetService Software
NetService Software
IP da placa de rede
Bom dia.
Ressuscitando o tópico, fiz alguns ajustes no código acima para rodar com Harbour e a biblioteca hbwin. Eis o código atualizado:
Espero que seja útil. Um grande abraço!
Ressuscitando o tópico, fiz alguns ajustes no código acima para rodar com Harbour e a biblioteca hbwin. Eis o código atualizado:
Código: Selecionar todos
FUNCTION Teste()
mb := GetMBInfo()
bios := GetBiosInfo()
macs := GetMACAddr(.t.)
ips := GetNICs(.t.)
cls
? '1/4 Exibe o modelo e versão da placa-mãe:'
? valtoprg(mb)
wait
cls
? '2/4 Exibe a versão e data da bios:'
? valtoprg(bios)
wait
cls
? '3/4 Exibe os endereços MACs encotrados no sistema:'
? valtoprg(macs)
wait
cls
? '4/4 Mostra todos os endereços IPs disponíveis:'
? valtoprg(ips)
wait
return
//Eis o código-fonte das rotinas desenvolvidas, qualquer comentário e sugestões fiquem à vontade para se expressarem pois estou à disposição:
#include 'common.ch'
/*
* Retorna os nomes, IPs, Mascara de redes e os endereçõs MAC das placas de rede
* instaladas na CPU atual. O parametro opcional indica se deve-se filtrar apenas
* as interfaces de rede válidos!
* Versão 1.0, 24/2/2007 11:14:23 - Vailton Renato da Silva
*
* Requer Windows Vista, Windows XP, Windows 2000 Professional ou Windows NT WK 4.0 SP4 >
* link: http://msdn2.microsoft.com/en-gb/library/aa394217.aspx
*/
FUNCTION GetNICs( lOnlyValids )
local oLoc, oSrv, oJbs, oJob, nic, mac, ip, msk, gtw
local Result := {}
default lOnlyValids to False
oLoc := WIN_OLECREATEOBJECT( "wbemScripting.SwbemLocator" )
oSrv := oLoc:ConnectServer()
oJbs := oSrv:ExecQuery( "SELECT Description, IPAddress, IPSubnet, IPConnectionMetric," +;
"MACAddress, DefaultIPGateway FROM Win32_NetworkAdapterConfiguration" )
FOR EACH oJob IN oJbs
nic := ToString(oJob: Description)
ip := oJob:IPAddress
if Valtype(ip) == 'A' .and. Len(ip) > 0
ip := ip[1]
else
ip := ToString(ip)
end
mac := oJob:MACAddress
if Empty(mac)
if !lOnlyValids
mac := '00:00:00:00:00:00'
else
loop
end
end
msk := oJob:IPSubnet
if Valtype(msk) == 'A' .and. Len(msk) > 0
msk := msk[1]
else
msk := ToString(msk)
end
gtw := oJob: DefaultIPGateway
if Valtype(gtw) == 'A' .and. Len(gtw) > 0
gtw := gtw[1]
else
gtw := ToString(gtw)
end
if Empty(ip) .and. lOnlyValids
loop
end
AADD( Result, nic + ', (' + ip + ', ' +msk + ', ' + gtw + ') ['+mac+']' )
NEXT
RETURN Result
/*
* Retorna os nomes e os endereços MAC das placas de rede instaladas na
* CPU atual. O parametro opcional indica se deve-se filtrar apenas NIC válidos!
* Versão 1.0, 24/2/2007 10:23:49 - Vailton Renato da Silva
*
* Requer Windows Vista, Windows XP, Windows 2000 Professional ou Windows NT WK 4.0 SP4 >
* link: http://msdn2.microsoft.com/en-gb/library/aa394216.aspx
*/
FUNCTION GetMACAddr( lOnlyValids )
local oLoc, oSrv, oJbs, oJob, mb, mac, typ
local Result := {}
default lOnlyValids to False
oLoc := WIN_OLECREATEOBJECT( "wbemScripting.SwbemLocator" )
oSrv := oLoc:ConnectServer()
oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_NetworkAdapter "+;
"WHERE ConfigManagerErrorCode = 0" )
FOR EACH oJob IN oJbs
mb := ToString(oJob: Description)
mac := ToString(oJob:MACAddress)
typ := ToString(oJob:AdapterType)
if Empty(mac)
if !lOnlyValids
mac := '00:00:00:00:00:00'
else
loop
end
end
if Empty(typ) .and. lOnlyValids
loop
end
AADD( Result, mb + ', ' + mac + ' ['+typ+']' )
NEXT
RETURN Result
/*
* Puxa as informações da BIOS do micro atual e retorna string formatada.
* Versão 1.0, 24/2/2007 10:06:51 - Vailton Renato da Silva
*
* Requer Windows Vista, Windows XP, Windows 2000 Professional ou Windows NT WK 4.0 SP4 >
* link: http://msdn2.microsoft.com/en-gb/library/aa394077.aspx
*/
FUNCTION GetBiosInfo()
local oLoc, oSrv, oJbs, oJob, mb, bd
oLoc := WIN_OLECREATEOBJECT( "wbemScripting.SwbemLocator" )
oSrv := oLoc:ConnectServer()
oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BIOS" )
mb := ''
FOR EACH oJob IN oJbs
MB += ToString(oJob:Manufacturer) + ', '
bd := ToString(oJob:ReleaseDate)
if Empty( bd )
bd := '00/00/0000'
else
bd := Subst( bd, 7, 2 ) + '/' + Subst( bd, 5, 2 ) + '/' + Subst( bd, 1, 4 )
end
MB += bd + ' #'
MB += ToString(oJob:SerialNumber) + ' ('
MB += ToString(oJob:Version) + ')'
NEXT
RETURN mb
/*
* Puxa as informações da MotherBoard instalada no PC e retorna string formatada
* Versão 1.0,24/2/2007 09:45:32 - Vailton Renato da Silva
*
* Requer Windows Vista, Windows XP, Windows 2000 Professional ou Windows NT WK 4.0 SP4 >
* link: http://msdn2.microsoft.com/en-gb/library/aa394072.aspx
*/
FUNCTION GetMBInfo()
local oLoc, oSrv, oJbs, oJob, mb
oLoc := WIN_OLECREATEOBJECT( "wbemScripting.SwbemLocator" )
oSrv := oLoc:ConnectServer()
oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )
mb := ''
FOR EACH oJob IN oJbs
MB += ToString(oJob:Manufacturer) + ', ' + ;
ToString(oJob: Product) + ' #' +;
ToString(oJob:SerialNumber)
NEXT
RETURN mb
/*
* Função auxiliar que converter os valores passados para string. Coisa simples
* 24/2/2007 09:20:32
*/
STATIC;
FUNCTION ToString(Arg1)
LOCAL tipo := ValType(Arg1)
if tipo $ 'CM' ; return Alltrim(Arg1) ; end
if tipo == 'N' ; return Alltrim(Str(Arg1)) ; end
if tipo == 'D' ; return Alltrim(dtoc(Arg1)) ; end
if tipo == 'U' ; return '' ; end
RETURN VALTOPRG(Arg1)
STATIC FUNCTION VALTOPRG( x, lLineFeed, lInherited )
LOCAL s := ''
LOCAL t := VALTYPE( x )
LOCAL i,j
IF lInherited == NIL ; lInherited := FALSE ;endif
IF lLineFeed == NIL ; lLineFeed := TRUE ;endif
DO CASE
CASE ( t == "C" )
s := '"' + x + '"'
CASE ( t == "N" )
s := alltrim(str( x ))
CASE ( t == "D" )
s := "CTOD('"+ DTOC(x) +"')"
CASE ( t == "L" )
s := iif( x, '.T.', '.F.' )
CASE ( t == "M" )
s := '"' + x + '"'
CASE ( t == "B" )
s := '{|| NIL } '
CASE ( t == "U" )
s := 'NIL'
CASE ( t == "A" )
s := "{"
j := LEN(x)
FOR i := 1 TO j
s += ToString( x[i], TRUE )
IF ( i <> j )
s += ","
End
IF lLineFeed
IF ( !lInherited ) .and. VALTYPE( x[i] ) == "A"
s += CHR(13)+CHR(10)
endif
End
End
s += "}"
CASE ( t == "H" )
s := "{"
j := LEN(x)
FOR i := 1 TO j
s += ToString( hb_HKeyAt( x, I ), .T. )
s += ' => '
s += ToString( hb_HValueAt( x, i ), .T. )
IF ( i <> j )
s += ","
End
IF lLineFeed
IF ( !lInherited ) .and. VALTYPE( x[hb_HKeyAt( x, i )] ) $ "AH"
s += CHR(13)+CHR(10)
ENDIF
End
End
s += "}"
CASE ( t == "O" )
s := x:ClassName()+'():New()'
End
RETURN s
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
IP da placa de rede
Só uma pequena contribuição.
Tem uma função em "C" que pode retornar o MAC:
Tem uma função em "C" que pode retornar o MAC:
Código: Selecionar todos
///////////////////////////////////////////////////////////////////////////////////////////
// Pega o MAC da placa de Rede
///////////////////////////////////////////////////////////////////////////////
#pragma BEGINDUMP
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <Iphlpapi.h>
#include <Assert.h>
#include "hbapi.h"
#include "hbapiitm.h"
HB_FUNC(_CLM)
{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information for up to 16 NICs
DWORD dwBufLen = sizeof(AdapterInfo); // Save the memory size of buffer
unsigned char ret[ 20 ] ={0};
DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info
assert(dwStatus == ERROR_SUCCESS); // Verify return value is valid, no buffer overflow
sprintf(ret,"%02X-%02X-%02X-%02X-%02X-%02X",
pAdapterInfo->Address[0], pAdapterInfo->Address[1],
pAdapterInfo->Address[2], pAdapterInfo->Address[3],
pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
hb_retc(ret);
}
#pragma ENDDUMP
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br

