我写了以下systemd服务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允许使用类似于%H表示小时,%M表示分钟等的strftime占位符,以便您创建时间戳文件。
但是,systemd具有特殊的指示符(如%n,%N,%p,%i,%U,%u,%m,%H,%b,%v),因此任何重叠的指示符(如%m和%H)都会通过systemd传递信息,并且不允许传递占位符到tcpdump以创建时间戳。
有没有人知道是否有一种方法可以在systemd中转义指示符,以便我可以将%m和%H传递给tcpdump?
systemd
版本 215 中,您可以使用Environment="TCPDUMP_FORMAT=%%Y-%%m-%%d_%%H:%%M:%%S"
代替EnvironmentFile
。 - Iskren