Pegar endereço MAC
Pessoal,
Preciso pegar o endereço MAC do computador do usuário via PHP. Alguém pode me ajudar?
Estou com a seguinte situação: temos 3 modelos de impressoras não-fiscais da Bematech (MP-2100, MP-4000 e MP-4200), a impressora MP-2100 imprime pela porta LPT1, a MP-4000 pela porta USB e a MP-4200 por uma porta COM.
Para usar as impressoras tenho que passar o modelo e a porta.
O sistema está pronto e funcionando para as duas primeiras, usando cookies. A questão é que não teria como utilizar cookies para a impressora MP-4200 pois, em cada computador que ele for instalado poderá estar em uma porta COM diferente.
A solução pensada é cadastrar o computador, no momento da instalação o técnico iria informar em qual porta a impressora estaria conectada, assim, ao logar no sistema seria feita uma busca no BD para carregar o modelo e a porta da impressora daquele computador.
Consegui a solução abaixo que roda em servidor Windows (local) e me retorna o endereço MAC corretamente. Mas nosso servidor (Locaweb) é Linux.
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line){
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress){
$macAddr=$cols[1];
}
}
$MAC = strtoupper(str_replace("-", ":", $macAddr));
echo $MAC;
Ao dar um var_dump na variável $lines, localmente ele retorna:
array
0 => string '' (length=0)
1 => string 'Interface: 192.168.0.150 --- 0x10003' (length=36)
2 => string ' Endere‡o IP Endere‡o f¡sico Tipo' (length=50)
3 => string ' 192.168.0.151 c8-9c-xc-4e-3c-84 dinƒmico ' (length=56)
4 => string '' (length=0)
Ao dar um var_dump na variável $lines, na Locaweb ele retorna:
array(2) { [0]=> string(33) "arp: in 1 entries no match found." [1]=> string(0) "" }
Será que me fiz entender? :)
Conto com a ajuda de todos.
Discussão (6)
Carregando comentários...