tcpdump - -G, -W और -C का उपयोग करके कैप्चर फ़ाइलों को घुमाएं


14

मैं एक घूर्णन tcpdump आउटपुट को कैप्चर करने में सक्षम होना चाहता हूं, जो 30 फ़ाइलों के डेटा को 48 फाइलों में, चक्रीय रूप से कैप्चर करता है।

मैन पेज का अर्थ है कि यह संभव होना चाहिए, लेकिन मेरे परीक्षण से मुझे जो परिणाम मिल रहा है, उसका उत्पादन नहीं लगता है:

-W

      -Cविकल्प के साथ संयोजन के रूप में उपयोग किया जाता है , यह निर्दिष्ट संख्या में बनाई गई फ़ाइलों की संख्या को सीमित करेगा, और शुरुआत से फाइलों को अधिलेखित करना शुरू करेगा, इस प्रकार एक 'घूर्णन' बफर का निर्माण होगा। इसके अलावा, यह फ़ाइलों की अधिकतम संख्या का समर्थन करने के लिए पर्याप्त लीड 0s के साथ फ़ाइलों का नाम देगा, जिससे वे सही ढंग से सॉर्ट कर सकें।

      -Gविकल्प के साथ संयोजन में उपयोग किया जाता है , यह घुमाए गए डंप फ़ाइलों की संख्या को सीमित करेगा, सीमा तक पहुंचने पर स्थिति 0 के साथ बाहर निकलता है। साथ -Cही उपयोग किया जाता है, तो व्यवहार प्रति बार चक्रीय फ़ाइलों में परिणाम होगा।

मैं इसे OS X 10.9.5 / 10.10.3 क्लाइंट पर चला रहा हूं। यहाँ परीक्षण आदेश है; यह 3 जी फ़ाइल के बाद ही बाहर निकलता है:

tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n

pls मेरा जवाब देखें
MariusMatutiae

जवाबों:


13

ऐसा इसलिए है क्योंकि आपने -W 3इसके बजाय लिखा है -W 48। हालाँकि, आपकी कमांड में अन्य त्रुटियाँ हैं।

विकल्प का -Gअर्थ है:

-G rotate_seconds

      यदि निर्दिष्ट किया गया है, तो -wहर रोट_ सेकंड के विकल्प के साथ निर्दिष्ट डंप फ़ाइल को घुमाया जाता है । Savefiles में निर्दिष्ट नाम होगा जिसमें स्ट्रैफ़ाइम -w(3) द्वारा परिभाषित समय प्रारूप शामिल होना चाहिए। यदि कोई समय प्रारूप निर्दिष्ट नहीं है, तो प्रत्येक नई फ़ाइल पिछले को अधिलेखित कर देगी।

      यदि -Cविकल्प के साथ संयोजन में उपयोग किया जाता है , तो फ़ाइल नाम ' फ़ाइल <गणना>' का रूप लेगा ।

चूंकि आपने लिखा था -G 3, आप हर 3 सेकंड में इसे घुमाएंगे, जबकि आपने कहा था

... जो 30 मिनट के डेटा को कैप्चर करता है

इसके अलावा, नामकरण योजना गलत है: ऊपर से,

यदि -Cविकल्प के साथ संयोजन में उपयोग किया जाता है , तो फ़ाइल नाम ' फ़ाइल <गणना>' का रूप लेगा ।

इस प्रकार नाम के लिए समय प्रारूप निर्दिष्ट करने का कोई मतलब नहीं है।

इसके अलावा, -Cविकल्प का कोई तर्क नहीं है, जबकि, मैन पेज के अनुसार , यह होना चाहिए:

tcpdump [  -AdDefIKlLnNOpqRStuUvxX  ] [  -B  buffer_size  ] [  -c  गिनती  ]
-सी  FILE_SIZE  ] [  जी  rotate_seconds  ] [  एफ  फ़ाइल  ] [  मैं  इंटरफ़ेस  ] [  -m  मॉड्यूल  ] [  -M  गुप्त  ] [  -r  फ़ाइल  ] [  -s  Snaplen  ] [  -T  type  ] [  -w  file  ] [  -W  filecount  ] [  -E  spi @ ipaddr algo: secret, ... ] [  -y  datalinktype  ] [  -z  postrotate- कमांड  ] [  -Z  उपयोगकर्ता  ] [  अभिव्यक्ति  ]

आदमी पेज कहता है:

-C

      सेवफ़ाइल के लिए एक कच्चा पैकेट लिखने से पहले, जांचें कि क्या फ़ाइल फ़िलहाल फ़ाइल_साइज़ से बड़ी है और यदि हां, तो वर्तमान सेवफ़ाइल को बंद करें और एक नया खोलें। पहली सेवफाइल के बाद सेवफाइल्स का नाम -wध्वज के साथ निर्दिष्ट होगा, इसके बाद एक नंबर होगा, 1 पर शुरू होगा और ऊपर की तरफ जारी रहेगा। File_size की इकाइयाँ लाखों बाइट्स हैं (1,000,000 बाइट्स, 1,048,576 बाइट्स नहीं)।

इसलिए आपको -C 100100 एमबी फ़ाइलों का उत्पादन करने के लिए निर्दिष्ट करना चाहिए ।

अंत में, आपकी आज्ञा होनी चाहिए:

tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n

यह फ़ाइलों को घुमाएगा (नाम ट्रेस 1, ट्रेस 2, ...) चक्रवात के साथ, अवधि 48 के साथ, हर 1800 सेकंड (= 30 मिनट) या हर 100 एमबी पर, जो भी पहले आता है।


अंत में उत्तर में याद आ रही है If no time format is specified, each new file will overwrite the previous.(मैंने उत्तर को अपडेट कर दिया है)
ठीक है

2
@okwap, जब आपने उत्तर संपादित किया (जोड़ने के लिए -% Y-% m-% d_% H:% M:% S), तो आपने -G, -C, और -W का एक साथ उपयोग करने का चक्रीय भाग तोड़ दिया। मूल फ़ाइल नाम के लिए सिर्फ / var / tmp / ट्रेस का उपयोग करके मूल उत्तर सही था और वर्णित (ट्रेस 1, ट्रेस 2, ...) के रूप में इच्छित चक्रीय आउटपुट उत्पन्न करता था। -G, -C, और -W का एक साथ उपयोग करते समय, आप फ़ाइल नाम में स्ट्रैपटाइम प्रारूप का उपयोग नहीं कर सकते हैं और फिर भी चक्रीय आउटपुट प्राप्त कर सकते हैं। आपके संपादन के साथ, tcpdump केवल गैर-चक्रीय रूप से फ़ाइलों को लिखना जारी रखेगा क्योंकि फ़ाइल नाम कभी भी दोहराए नहीं जाते हैं।
बिल मेनेज़

मेरे ध्यान में लाने के लिए @BillMenees धन्यवाद, मैं पूर्ववत okwap के संपादित करें।
मारियसमैट्यूटिया

नीचे टिप्पणी में स्वाइनस्टर की तरह, मैं ध्यान देता हूं कि यह उत्तर अपेक्षित व्यवहार का उत्पादन नहीं करता है। -W -W -C और -G के संयोजन में उपयोग करने से एक ही फाइल को बार-बार ओवरराइट किया जाता है। यह कई फ़ाइलों को -W <n> के बराबर बनाने का कारण नहीं बनता है क्योंकि कोई अपेक्षा नहीं करेगा।
Niels2000

6

पर विस्तार flabdablet के जवाब (बदल रहा -G 1800करने के लिए -G 300- रोटेशन हर पाँच मिनट - बस प्रयोजनों के परीक्षण के लिए),

tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300

आप दे देंगे %m=month, %d=day of month, %H=hour of day, %M=minute of day, %S=second of day, %s=millisecond of day, जिसका परिणाम

/var/temp/trace-03-02-08-30-56-1520002568
/var/temp/trace-03-02-08-35-56-1520002568
/var/temp/trace-03-02-08-40-56-1520002568

उन pesky आंतरायिक समस्याओं के लिए निशान के आयोजन के लिए बहुत उपयोगी है। इसके अलावा, यदि आप जड़ नहीं हैं, तो आप चाहते हैं sudoऔर निश्चित रूप से यह एक nohup कर सकते हैं :

sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"

3

मुझे लगता है कि आप सभी की जरूरत है

tcpdump -i en0 -G 1800 -w /var/tmp/trace-%H-%M.pcap

Strftime प्रारूप निर्दिष्ट करता है कि -G फ़ाइल नाम में उम्मीद करता है कि उसे पूर्ण तिथि और समय का प्रतिनिधित्व नहीं करना है। वहाँ केवल% H और% M के साथ, और ठीक आधे घंटे का एक घूमने का समय, tcpdump के किसी भी दिए गए आह्वान से केवल आधे घंटे के अलावा दो अलग-अलग% M मान उत्पन्न होंगे, और कल की ट्रेस फ़ाइलें एक ही घंटे में अधिलेखित हो जाएंगी। और मिनट संख्या फिर से चारों ओर रोल।


1

कुछ प्रयोग के बाद, मुझे उम्मीद के मुताबिक काम करने के लिए @MariusMatutiae जवाब नहीं मिला। यदि समय सीमित कारक बन गया है और फ़ाइल नाम के लिए समय प्रारूप को जोड़ने के बिना, तो वर्तमान pcap फ़ाइल को केवल ओवरराइट किया गया है।

उदाहरण के लिए, कोशिश करें:

tcpdump -i en0 -w /var/tmp/trace -W 10 -G 5 -C 1

तुम सब के साथ खत्म हो trace.pcap0रहा है और अधिक से अधिक लिखा जा रहा है।

जैसा कि टिप्पणी में यह सुझाव दिया गया है, यदि आप फ़ाइल नाम में समय स्वरूपण जोड़ते हैं, तो आप बस फाइलों की बढ़ती सूची और प्रत्येक के साथ अंत करते हैं।

इसलिए, मुझे साधारण आकार की सीमित फ़ाइलों के साथ रहना पड़ा:

tcpdump -i en0 -w /var/tmp/trace -W 48 -C 100

0

हाँ, यह MariusMatutiae के उत्तर के अनुसार काम नहीं करता है ।

tcpdump ...{other options}... -w httpdebug.pcap -W 48 -G 1800 -C 100
$ ls -l
-rw-r--r--. 1 tcpdump tcpdump  100007441 Mar 17 17:57 httpdebug.pcap00
-rw-r--r--. 1 tcpdump tcpdump   46895104 Mar 17 18:02 httpdebug.pcap01
-rw-r--r--. 1 tcpdump tcpdump   93091143 Mar 17 17:47 httpdebug.pcap02
-rw-r--r--. 1 tcpdump tcpdump    5372072 Mar 17 16:17 httpdebug.pcap03

यह मुझे ऐसा लग रहा है कि यह -C 10030 मिनट की अवधि में जितनी संभव हो उतनी एमबी फाइलें कैप्चर कर सकता है क्योंकि httpdebug.pcap03इसमें शुरुआती टाइमस्टैम्प है और यह 100 एमबी से बहुत छोटा है, इसलिए ऐसा लगता है कि यह 30 मिनट के निशान पर कट गया था। एक बार जब यह 30 मिनट तक हिट हो जाता है, तो httpdebug.pcap00यह 100 एमबी तक हिट करने के लिए वापस कूदता है और संख्या में वृद्धि करता है। इसका मतलब है कि यदि आपके पास 30 मिनट की अवधि में बहुत अधिक अनुरोध हैं, तो आपको बहुत अधिक httpdebug.pcapXX नंबर मिलते हैं। यदि आप कभी भी उस अवधि में कई अनुरोधों तक नहीं पहुंचते हैं, तो उन उच्च httpdebug.pcapXX नंबर को कभी भी अधिलेखित नहीं किया जाएगा।

तो मैं सोच रहा हूँ कि प्रति टाइम साइक्लिकल फाइल्स का मतलब है कि टाइमस्लाइज़ है -G 1800और यह हर -G 1800और हर चक्र में वृद्धि करेगा -C 100

मुझे यकीन नहीं है कि अगर -W 48यह प्रभावित करता है, लेकिन शायद अगर तुम httpdebug.pcap47(गिनती 0` पर शुरू होता है, यह पैकेट पर कब्जा करना बंद कर देंगे)।


कुछ समय पहले, एक गीथहब मुद्दा था जो भ्रामक शब्दांकन के बारे में खुला था । उन्होंने कार्यान्वयन को नहीं बदला, लेकिन उन्होंने प्रलेखन को थोड़ा स्पष्ट करने की कोशिश की।

प्रस्तावित परिवर्तनों पर में विलय कर दिया गया 28 जनवरी, 2019

आज के रूप में, 17 मार्च, 2019, यहाँ वर्तमान दस्तावेज़ है:

-C:

.BI \-C " file_size"
Before writing a raw packet to a savefile, check whether the file is
currently larger than \fIfile_size\fP and, if so, close the current
savefile and open a new one.  Savefiles after the first savefile will
have the name specified with the
.B \-w
flag, with a number after it, starting at 1 and continuing upward.
The units of \fIfile_size\fP are millions of bytes (1,000,000 bytes,
not 1,048,576 bytes).

-G:

.BI \-G " rotate_seconds"
If specified, rotates the dump file specified with the
.B \-w
option every \fIrotate_seconds\fP seconds.
Savefiles will have the name specified by
.B \-w
which should include a time format as defined by
.BR strftime (3).
If no time format is specified, each new file will overwrite the previous.
Whenever a generated filename is not unique, tcpdump will overwrite the
preexisting data; providing a time specification that is coarser than the
capture period is therefore not advised.
.IP
If used in conjunction with the
.B \-C
option, filenames will take the form of `\fIfile\fP<count>'.

-W:

.B \-W
Used in conjunction with the
.B \-C
option, this will limit the number
of files created to the specified number, and begin overwriting files
from the beginning, thus creating a 'rotating' buffer.
In addition, it will name
the files with enough leading 0s to support the maximum number of
files, allowing them to sort correctly.
.IP
Used in conjunction with the
.B \-G
option, this will limit the number of rotated dump files that get
created, exiting with status 0 when reaching the limit.
.IP
If used in conjunction with both
.B \-C
and
.B \-G,
the
.B \-W
option will currently be ignored, and will only affect the file name.

मुझे अभी भी लगता है कि यह थोड़ा भ्रमित करने वाला है, लेकिन मुझे लगता है कि मेरे निष्कर्ष से भिन्नता है, यह है कि यह कहता है कि -Wजब उपयोग किया जाता -C -Gहै तो इससे कुछ भी प्रभावित नहीं होता है लेकिन फ़ाइल नाम।

सामान्य तौर पर, -Wफ़ाइलों की संख्या को सीमित करने के लिए उपयोग किया जाता है। यदि आप अनिश्चित काल के लिए कब्जा करना चाहते हैं तो इसका उपयोग न करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.