创建新记录时是否可以获取用户的Mac地址?
是否可以获取发布新记录的用户的MAC地址?
如果我有名为mac_address
列,如何编写控制器以将MAC地址放入该列?
用户的mac地址不是Web请求的一部分。
我知道这不是你的问题,但你可以使用请求对象获取他们的IP地址:
request.ip
在您的create
操作中,您可以使用以下内容(假设您有一个列ip_address
):
def create @item = Item.new(params[:item]) @item.ip_address = request.ip if @item.save ... end end
您可以获取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 /网段。
更新
检查亚马逊linux和格式似乎相同。