2017-02-27 4 views
0

ich diesen Befehl zu konvertieren mehrere PCAP Log-Dateien zu konvertieren.Schleife verwenden, um mehrere Dateien in einzelne Dateien

Jetzt möchte ich die Ausgabe trennen, jede konvertierte Datei in einer separaten Ausgabedatei wie dies mit Schleife:

for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do 
tcpdump -n -r "$f" > /home/dalya/snort-2.9.9.0/snort_logs2/"$f.txt" ; 
done 

Aber es gab mir:

bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894664.txt: No such file or directory 
bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894770.txt: No such file or directory 
bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1487346947.txt: No such file or directory 

ich glaube, das Problem in $ f, Wo bin ich falsch gelaufen?

Antwort

1

Wenn Sie laufen

for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do 
    echo $f 
done 

Sie werden feststellen, dass Sie

/home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894664 
/home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894770 
/home/dalya/snort-2.9.9.0/snort_logs/snort.log.1487346947 

sind immer können Sie verwenden basename

nur den Dateinamen zu erhalten, so etwas wie dieses:

for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do 
    base="$(basename $f)" 
    echo $base 
done 

Sobald Sie zufrieden sind, dass dies funktioniert, entfernen Sie die Echo-Anweisung und verwenden Sie stattdessen

.

Edit: tcpdump -n -r "$base" > ... sollte tcpdump -n -r "$f" > ... gewesen sein; Sie möchten nur $base im Zusammenhang mit dem Erstellen des neuen Dateinamens verwenden, nicht im Zusammenhang mit dem Lesen der vorhandenen Daten.

+0

Ich habe getan, wie Sie sagten, und es hat funktioniert, bis zum letzten, als ich das verwendete: # für f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.*; do base = "$ (Basisname $ f)" tcpdump -n -r "$ base"> /home/dalya/snort-2.9.9.0/snort_logs2/"$base.txt " erledigt. Es hat mir dieses: tcpdump: snort.log.1485894664: Keine solche Datei oder das Verzeichnis tcpdump: snort.log.1485894770: Keine solche Datei oder das Verzeichnis tcpdump: snort.log.1487346947: Keine solche Datei oder das Verzeichnis tcpdump : abgeschnittene Speicherabbilddatei; versucht, 4 Datei-Header-Bytes zu lesen, bekam nur 0 – Dalya

Verwandte Themen