ฉันได้เขียน systemd service ต่อไปนี้ tcpdumpd.service
เพื่อเริ่มการบันทึก tcpdump แบบถาวร
[Unit]
Description=TCPDumpd
After=multi-user.target network.target
[Service]
Type=simple
ExecStart=/usr/sbin/tcpdump -pni eth0 -s65535 -G 3600 -w '/var/log/tcpdump/trace_%Y-%m-%d_%H:%M:%S.pcap' -z gzip
Restart=on-abort
[Install]
WantedBy=multi-user.target
tcpdump อนุญาตให้ใช้ strftime-placeholder เช่น %H สำหรับชั่วโมง, %M สำหรับนาที และอื่นๆ เพื่อให้คุณสามารถสร้างไฟล์ประทับเวลาได้
อย่างไรก็ตาม systemd มีตัวระบุพิเศษที่สามารถใช้ได้ เช่น (%n, %N, %p, %i, %U, %u, %m, %H, %b, %v) ดังนั้นตัวระบุใดๆ ก็ตาม ที่ทับซ้อนกัน เช่น %m และ %H ส่งผ่านข้อมูลจาก systemd และไม่อนุญาตให้ตัวยึดตำแหน่งถูกส่งผ่านไปยัง tcpdump เพื่อทำการประทับเวลา
ไม่มีใครรู้ว่ามีวิธีที่จะหลบหนีตัวระบุใน systemd เพื่อให้ฉันสามารถส่ง %m และ %H ไปยัง tcpdump ได้หรือไม่