Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Perl Hash-Arrays auslesen

Frage Entwicklung Perl

Mitglied: marinux

marinux (Level 2) - Jetzt verbinden

29.01.2012 um 17:50 Uhr, 3762 Aufrufe, 2 Kommentare

Hallo,

ich hole mir mit folgendem Code (Perl) aus einer Textdatei IP-Verbindungsdaten.

01.
sub test { 
02.
 
03.
	my %arr_hash; 
04.
 
05.
	foreach (`awk '{print \$1, \$3, \$4, \$5, \$6}' textdatei.txt`){ 
06.
 
07.
	      ($src_ip, $dest_ip, $src_prt, $dest_prt, $bytes) = split(/ /, $_); 
08.
	      $arr_hash{"source"}{$src_ip}{$dest_ip}{$src_prt}{$dest_prt}+=$bytes; 
09.
10.
 
11.
 
12.
      foreach ($arr_hash{"source"}){ 
13.
       # Hier sollen z.B. alle Quellen IPs oder Bytes ausgegeben werden 
14.
15.
  
16.
}
Diese sollen in einem Hash-Array abgespeichert werden. Hash-Array deshalb, weil so Verbindungssätze, die mehrfach vorkommen leicht zugeordnet werden können, ohne dass ich überprüfen muss, ob der Eintrag im Array schon vorhanden ist.

Das ist soweit auch kein Problem. Mir beschert das Auslesen des Hash-Arrays aber Probleme.

Wie kann ich mir z.B. alle Quellen IPs ($src_ip) ausgeben lassen oder für alle gespeicherten Verbindungen die Bytes ($bytes)?

Gruß
Mitglied: hmarkus
29.01.2012 um 21:43 Uhr
Guten Abend marinux,
Zitat von marinux:
$arr_hash{"source"}{$src_ip}{$dest_ip}{$src_prt}{$dest_prt}+=$bytes;
woher kommte denn "source"? bzw. was ist "source"? sollte nicht
$arr_hash{$src_ip}{$dest_ip}{$src_prt}{$dest_prt}+=$bytes;
gemeint sein?
Diese sollen in einem Hash-Array abgespeichert werden. Hash-Array deshalb, weil so Verbindungssätze, die mehrfach vorkommen
leicht zugeordnet werden können, ohne dass ich überprüfen muss, ob der Eintrag im Array schon vorhanden ist.
So wie ich das verstehe ist es aber nicht ein Hash sondern ein Hash von Hashes von Hashes von Hashes. Du müsstest also drei Schleifen benutzen.
foreach $key_src_ip ( keys %arr_hash){ 
    foreach $key_dest_ip (keys $arr_hash{$key_dest_ip} 
        .... usw.  
}
Es ist aber möglich, dass ich Deine Datenstruktur falsch verstanden hab. Vielleicht postest Du mal ein Beispiel Deiner textdatei.txt damit man das mal ausprobieren kann.

Gruß

Markus
Bitte warten ..
Mitglied: marinux
30.01.2012 um 09:09 Uhr
Hallo,

danke für Deine Antwort, aber sie hat nicht ganz funktioniert.

Ich habe es so gelöst:

01.
 
02.
	foreach (`awk '{print \$1, \$3, \$4}' textdatei.txt`){ 
03.
 
04.
	      ($src_ip, $dest_ip, $bytes) = split(/ /, $_); 
05.
	      $arr_hash{"source"}{$src_ip}{$dest_ip}+=$bytes; 
06.
07.
 
08.
      foreach $key_src_ip (keys %{$arr_hash{"source"}}){ 
09.
	      print $key_src_ip; 
10.
	      foreach $key_dest_ip (keys %{$arr_hash"source"}{$key_src_ip}}){ 
11.
		  print "\n   ".$key_dest_ip." ".$arr_hash{"source"}{$key_src_ip}{$key_dest_ip}."\n\n"; 
12.
13.
      }
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

VB for Applications
gelöst Mit VBA Zertifikate auslesen (3)

Frage von it4baer zum Thema VB for Applications ...

LAN, WAN, Wireless
gelöst Cisco Aironet AP 1250 passwörter auslesen (17)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...

Batch & Shell
gelöst Datei aus Verzeichnis auslesen? (4)

Frage von freshman2017 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (49)

Frage von sabines zum Thema Internet ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (17)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
Windows 2016 Hyper-V und VHDS (15)

Frage von emeriks zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...