2013-01-05 3 views

답변

5

사용자의 mac 주소는 웹 요청의 일부가 아닙니다.

내가 당신의 질문이 아니다 알아,하지만 당신이 요청 객체를 사용하여 IP 주소를 얻을 수 있습니다, 당신이 뭔가를 할 수 귀하의 create 행동에

request.ip 

을 다음 (당신이 열 ip_address이 가정) :

def create 
    @item = Item.new(params[:item]) 
    @item.ip_address = request.ip 
    if @item.save 
    ... 
    end 
end 
+0

감사합니다. Jquery를 사용하면 어떨까요? Mac 주소를 얻을 수 있습니까? – cat

+0

당신은 할 수 없습니다. 브라우저는 호스트에서 해당 종류의 정보를 노출하지 않습니다. – theIV

+0

많은 감사합니다. – cat

6

당신은 request.ip을 가져 와서 ping을 부를 수 있습니다. 이것은 기계의 ARP 캐시에 ip를 넣어야합니다. arp 캐시를 덤프하면 MAC 주소를 일치시킬 수 있습니다.

`ping -c 1 #{request.ip}` 
sleep(10) # For dramatic effect 
arptable = `arp -a` 
entries = arptable.split("\n") 
ipmap = {} 
entries.each do |e| 
    ent = e.split(" ") 
    ipmap["#{ent[1].gsub(/\(|\)/, "")}"] = ent[3] 
end 
puts ipmap["#{request.ip}"] 

이 코드는 OSX 매버릭스, 도구 및 서식 리눅스/BSD/솔라리스에 다를 수 있지만 같은 접근해야한다 테스트되어, 다른주의해야 할 점은 단지 로컬 인트라넷/네트워크 세그먼트에서 작동한다는 것입니다.

업데이트 아마존 리눅스에 검사와 형식이 동일 보인다.

관련 문제