ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Pcap und command line arguments
BeitragVerfasst: 06 Okt 2010, 17:11 
Offline
Geselle

Registriert: 31 Okt 2008, 00:29
Beiträge: 143
Hallo,

leider komm ich nicht mehr weiter.

Ich habe ein Rubyscript wie dieses:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#!/usr/bin/env ruby

# this line imports the libpcap ruby bindings
require 'pcaplet'

# Arguments
interface = ARGV[0]
filter = ARGV[1]
grab_size = ARGV[2]

# create a sniffer that grabs the first 1500 bytes of each packet
$network = Pcaplet.new("-s #{grab_size} -i #{interface}")

# create a filter that uses our query string and the sniffer we just made
$filter = Pcap::Filter.new(filter, $network.capture)

# add the new filter to the sniffer
$network.add_filter($filter)

# iterate over every packet that goes through the sniffer
for p in $network
# print packet data for each packet that matches the filter
puts p.tcp_data if $filter =~ p
end


Das Problem zeigt sich identisch wie hier
http://www.allquests.com/question/2488769/command-line-arguments.html
Leider wurde es nicht gelöst. Mein Aufruf aud der Konsole:

sudo ruby capture_network.rb lo 'tcp and dst port 80' 1500


Ich freu mich schon auf eure Hilfe.

Grüße


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Pcap und command line arguments
BeitragVerfasst: 06 Okt 2010, 17:34 
Offline
Rubyist

Registriert: 09 Jun 2009, 18:00
Beiträge: 346
Naja, wenn man sich den pcap code mal anschaut findet man schnell warum sich der Interpreter über optparse aufregt:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

module Pcap
class Pcaplet
def usage(status, msg = nil)
$stderr.puts msg if msg
pcaplet_usage
exit(status)
end

def initialize(args = nil)
if args
ARGV[0,0] = args.split(/\s+/)
end
@device = nil
@rfile = nil
@count = -1
@snaplen = 68
opts = OptionParser.new do |opts|
opts.on('-d') {$DEBUG = true}
opts.on('-v') {$VERBOSE = true}
opts.on('-n') {Pcap.convert = false}
opts.on('-i IFACE') {|s| @device = s}
opts.on('-r FILE') {|s| @rfile = s}
opts.on('-c COUNT', OptionParser::DecimalInteger) {|i| @count = i}
opts.on('-s LEN', OptionParser::DecimalInteger) {|i| @snaplen = i}
end
begin
opts.parse!
rescue
usage(1)
end

@filter = ARGV.join(' ')

end
end


Pcaplet macht sein ARG-Parsing selbst und wurstelt lustig im globalen ARGS rum. Das ist natürlich eine sehr eigene Variante das zu machen und natürlich nicht gerade freundlich gegenüber Leuten die ihr eigenes opt-parsing machen wollen. Ich würde mir an der Stelle mal überlegen den Konstruktor mit was sinnvollem zu überschreiben das tatsächlich echte Parameter nimmt statt irgendwelcher Strings.

_________________
Ruhe jetzt, sonst hol ich meinen kleinen Bruder.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Pcap und command line arguments
BeitragVerfasst: 06 Okt 2010, 20:17 
Offline
Geselle

Registriert: 31 Okt 2008, 00:29
Beiträge: 143
Ich denke Du meinst jetzt den Konstruktor von Pcaplet.

Also statt (args=nil) so etwas

initialize(debug, verbose, rfile, device, count, snaplen)



Ja das muss ich dann wohl machen. Danke

Grüße


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: