1
私の問題はrubyがrequire packetfuを認識し、PacketFuをIRBに含めることですが、スクリプトとして実行するとうまくいきません。私はそれが私の宝石のディレクトリが編成されている方法や、私がアプリを実行するためにsudoとしてチェックインする際に何か変わったことがあるかどうかを知りたい。ここでPacketfu Gem Recognition Error
は、私は通常のユーザーとして、それを実行したときに生成されるエラーです:
1 tMobile:~ cj3kim$ ruby packetfu.rb
2 Simple sniffer for PacketFu 1.1.5
3 /Users/cj3kim/.rvm/gems/ruby-1.9.3-p0/gems/packetfu-1.1.5/lib/packetfu/capture.rb:73:in `capture': Not root, so can't capture packets. Error: (RuntimeError)
4 from /Users/cj3kim/.rvm/gems/ruby-1.9.3-p0/gems/packetfu-1.1.5/lib/packetfu/capture.rb:46:in `setup_params'
5 from /Users/cj3kim/.rvm/gems/ruby-1.9.3-p0/gems/packetfu-1.1.5/lib/packetfu/capture.rb:39:in `initialize'
6 from packetfu.rb:9:in `new'
7 from packetfu.rb:9:in `sniff'
8 from packetfu.rb:20:in `<main>'
は、sudoでは動作しません。なぜ?:簡単なスニファプログラムのpacketfu文書から
9 The-BatMobile:~ cj3kim$ sudo ruby packetfu.rb
10 /Users/cj3kim/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- packetfu (LoadError)
11 from /Users/cj3kim/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
12 from packetfu.rb:1:in `<main>'
サンプルコード:
1 require 'packetfu'
2 include PacketFu
3
4 puts "Simple sniffer for PacketFu #{PacketFu.version}"
5
6 iface = ARGV[0] || "en0"
7
8 def sniff(iface)
9 cap = Capture.new(:iface => iface, :start => true)
10 cap.stream.each do |p|
11 pkt = Packet.parse p
12 if pkt.is_ip?
13 next if pkt.ip_saddr == Utils.ifconfig[:ip_saddr]
14 packet_info = [pkt.ip_saddr, pkt.ip_daddr, pkt.size, pkt.proto.last]
15 puts "%-15s -> %-15s %-4d %s" % packet_info
16 end
17 end
18 end
19
20 sniff(iface)
すべてのヘルプは高く評価されます。見てくれてありがとう!
http://stackoverflow.com/questions/3644897/rvm-cannot-use-ruby-with-sudo – Casper