新しいレコードを投稿するユーザーの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}"]
このコードはosxmavericksでテストされており、ツールとフォーマットはlinux / bsd / solarisで異なる場合がありますが、同じアプローチである必要があります。もう1つの注意点は、ローカルイントラネット/ネットワークセグメントでのみ機能することです。
アップデート
Amazon Linuxで確認したところ、フォーマットは同じようです。
于 2013-12-30T03:01:51.803 に答える
6
ユーザーの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
于 2013-01-05T20:03:17.763 に答える