是否可以获得发布新记录的用户的 MAC 地址?
如果我有名为 的列mac_address
,我如何编写控制器以将 MAC 地址放入该列?
问问题
4972 次
2 回答
7
您可以接听request.ip
并调用 ping。这应该将 ip 放入您机器的 arp 缓存中。通过转储 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 mavericks 上进行了测试,工具和格式可能在 linux/bsd/solaris 上有所不同,但应该是相同的方法,另一个警告是它只适用于您的本地 Intranet/网段。
更新
在 amazon linux 上检查,格式似乎相同。
于 2013-12-30T03:01:51.803 回答
6
用户的 mac 地址不是 Web 请求的一部分。
我知道这不是您的问题,但您可以使用请求对象获取他们的 IP 地址:
request.ip
在您的create
操作中,您可能会有以下内容(假设您有一个 column ip_address
):
def create
@item = Item.new(params[:item])
@item.ip_address = request.ip
if @item.save
...
end
end
于 2013-01-05T20:03:17.763 回答