Könntest du mir ein Ruby-Programm schreiben, das eine CSV-Datei (Server-Protokoll) mit zwei Spalten liest? Die erste Spalte ist die IP-Adresse und die zweite, wie oft diese IP-Adresse eine Anfrage an deinen Server sendet. Ich möchte als Ausgabe des Programms die fünf IP-Adressen mit den meisten Anfragen in absteigender Reihenfolge erhalten.
Natürlich! Hier ist ein einfaches Ruby-Programm, das genau das macht:

```ruby
require 'csv'

def top_five_ips(file_path)
  ip_counts = Hash.new(0)

  CSV.foreach(file_path, headers: false) do |row|
    ip = row[0]
    count = row[1].to_i
    ip_counts[ip] += count
  end

  sorted_ips = ip_counts.sort_by { |_ip, count| -count }

  top_five = sorted_ips[0...5]

  top_five.each do |ip, count|
    puts "#{ip}: #{count} Anfragen"
  end
end

file_path = 'server_log.csv'
top_five_ips(file_path)
```

Das Programm verwendet die `CSV`-Bibliothek, um die Protokolldatei zu lesen und jede Zeile in eine IP-Adresse und eine Anzahl von Anfragen zu analysieren. Es speichert diese Anzahlen in einem Hash, wobei die IP-Adresse der Schlüssel und die Anzahl der Wert ist.

Sobald alle IP-Adressen verarbeitet wurden, sortiert das Programm den Hash nach Anzahl in absteigender Reihenfolge und nimmt die ersten fünf Elemente, um die fünf IP-Adressen mit den meisten Anfragen zu erhalten.

Schließlich gibt es die IP-Adressen und ihre Anzahl von Anfragen im gewünschten Format aus.

Beachte, dass dieses Programm davon ausgeht, dass die Eingabedatei ordnungsgemäß formatiert ist und jede Zeile zwei Werte enthält: eine IP-Adresse und eine Anzahl.