创建新记录时是否可以获取用户的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和格式似乎相同。