2016-11-10 1 views
2

Я написал следующую службу systemd tcpdumpd.service, чтобы начать постоянную запись tcpdump.Как избежать системного указателя для передачи команды в ExecStart

[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 

ТСРйитр позволяет STRFTIME-заполнители, как% H на час,% M за минуту и ​​так далее, чтобы создавать временные штампованных файлы.

Однако система имеет специальные спецификаторы, которые могут быть использованы в ней, например: (% n,% N,% p,% i,% U,% u,% m,% H,% b,% v) So любой из спецификаторов, которые перекрываются, например,% m и% H, передают информацию из systemd и не позволяют передать его в tcpdump, чтобы сделать отметку времени.

Кто-нибудь знает, есть ли способ избежать спецификаторов в systemd, поэтому я могу передать% m и% H до tcpdump?

ответ

5

Я пытался избежать специальных спецификаций, таких как %%m, \%m без везения.

Но, если вам нужна работа, чтобы сделать, вот обходной путь:

Создать файл, содержащий tcpdumpd.environment определение переменной TCPDUMP_FORMAT.

TCPDUMP_FORMAT=%Y-%m-%d_%H:%M:%S 

Изменить tcpdumpd.service: добавить EnvironmentFile= опции к нему и заменить строку формата с ${TCPDUMP_FORMAT}.

[Unit] 
Description=TCPDumpd 
After=multi-user.target network.target 

[Service] 
Type=simple 
EnvironmentFile=tcpdumpd.environment 
ExecStart=/usr/sbin/tcpdump -pni eth0 -s65535 -G 3600 -w '/var/log/tcpdump/trace_${TCPDUMP_FORMAT}.pcap' -z gzip 
Restart=on-abort 

[Install] 
WantedBy=multi-user.target 
+0

Это решение. Нашел [этот ответ] (http://stackoverflow.com/questions/28881758/how-can-i-use-spaces-in-systemd-command-line-arguments?rq=1), который дал мне ваше точное решение. Благодаря! –

+1

С 'systemd' версией 215 вы можете использовать' Environment = "TCPDUMP_FORMAT = %% Y - %% m - %% d _ %% H: %% M: %% S" 'вместо' EnvironmentFile'. –

Смежные вопросы