Ruby als Schnüffler
Ein Skript wie in Listing 9 genügt Root, um einen kleinen Traffic-Monitor zu betreiben. Es definiert die zu überwachende IP-Adresse und erzeugt ein Sniffer-Objekt, das die angegebene Netzwerkkarte beschnüffelt. Für jedes Paket, das der Sniffer mitbekommt, prüft das Programm, ob der Absender oder der Empfänger mit der angegebenen IP-Adresse übereinstimmt, und zählt die übertragenen Bytes zum Akkumulator »sent_bytes«
beziehungsweise »received_bytes«
hinzu. Die Schleife »sniffer.each_packet«
kann der Anwender auf der Kommandozeile mit der Tastenkombination [Strg]+[C] abbrechen. Dann läuft der Rest des Skripts zu Ende ab, schließt den Sniffer und gibt eine Zusammenfassung der gesendeten und empfangenen Pakete aus.
Listing 9
Pcap-Bibliothek
01 require "pcaplet"
02
03 HOST_IP = Pcap::IPAddress.new("10.0.0.1")
04
05 received_bytes = 0
06 sent_bytes = 0
07
08 sniffer = Pcap::Pcaplet.new("-i eth1")
09 sniffer.each_packet do |pkt|
10 next unless pkt.ip?
11
12 src, dst, = pkt.ip_src, pkt.ip_dst
13
14 if src == HOST_IP
15 sent_bytes += pkt.size
16 elsif dst == HOST_IP
17 received_bytes += pkt.size
18 end
19 end
20 sniffer.close
21
22 puts "#{HOST_IP} hat #{sent_bytes} Bytes gesandt und #{received_bytes} empfangen."
Fit bei Dateiformaten
Damit der Programmierer Dateien nicht stets von Hand auseinandernehmen oder zusammenstückeln muss, bringt Ruby Bibliotheken für gebräuchliche Dateiformate wie Json oder Base64 (für E-Mail-Attachments) mit. Auch CSV-Unterstützung ist mittlerweile eingebaut, früher musste man sie noch gesondert über das Faster-CSV-Gem installieren. Listing 10 liest und schreibt zeilenweise.
Listing 10
CSV-Verarbeitung
01 require "csv"
02
03 # Zeilen als Arrays einlesen
04 CSV.foreach("users.csv") do |(login, name)|
05 puts login if name =~ /And/
06 end
07
08 # Zeilen als Hashes einlesen
09 CSV.foreach("users.csv", :headers => true) do |row|
10 puts row["login"] if row["name"] =~ /And/
11 end
12
13 # Array in Zeilen schreiben
14 CSV.open("users.csv", "wb") do |csv|
15 csv << ["george", "Georgey Porgey"]
16 csv << %w(gertrude Gertrude)
17 end
Wer mit Ruby in Zip-Archive sehen oder sie verändern möchte, greift zur Zip-Gem [6]. Sie kann Dateien auflisten, extrahieren und hinzufügen. Zum Arbeiten mit XML gibt es die mitgelieferte Bibliothek Rexmal, die vollständig in Ruby implementiert ist. Sie eignet sich, um einfache Dokumente zu erzeugen oder Elemente und Werte per Xpath auszulesen.
Wer Gnomes native XML-Bibliothek Libxml2 installiert hat, kann alternativ Libxml-ruby [7] als praktischen Wrapper benutzen, der wesentlich bessere Performance bietet. Eine besonders schöne Programmierschnittstelle zeichnet Nokogiri [8] aus, das sowohl Xpath- als auch CSS-3-Selektoren unterstützt.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 5 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





