पृष्ठभूमि
NetworkManager dispatcher.d / pre-down.d स्क्रिप्ट नहीं चलाता है, इसलिए मैंने एक systemd- सेवा स्क्रिप्ट बनाई है। यह स्टार्टअप और शटडाउन के दौरान अच्छी तरह से काम कर रहा है, लेकिन शटडाउन के दौरान यह syslog को नहीं लिखता है। फ़ाइल /etc/iptables.rules को शटडाउन के दौरान अद्यतन किया जाता है, लेकिन कुछ भी लॉग / var / log / syslog में लॉग नहीं होता है।
चल रहे टर्मिनल से ...
systemctl restart network-down
... सिसलॉग को सूचना लिखता है। लेकिन सिस्टम रिबूट के दौरान नहीं।
सवाल
क्या मेरी सेवा-लिपि में कुछ कमी है?
स्क्रिप्ट: /etc/systemd/system/network-down.service:
[Unit]
Description=Firewall Iptables Save
Wants=network-online.target
After=network.target network-online.target
[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/bash /etc/NetworkManager/dispatcher.d/pre-down.d/01-firewall-pre-down network pre-down
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Firewall Iptables Save
[Install]
WantedBy=multi-user.target
स्क्रिप्ट: 01-फ़ायरवॉल-प्री-डाउन:
if [ -x /usr/bin/logger ]; then
LOGGER="/usr/bin/logger -s -p daemon.info -t FirewallHandler[PREDOWN]"
else
LOGGER=echo
fi
case "$2" in
pre-up)
if [ ! -r /etc/iptables.rules ]; then
${LOGGER} "No iptables rules exist to restore."
return
fi
if [ ! -x /sbin/iptables-restore ]; then
${LOGGER} "No program exists to restore iptables rules."
return
fi
${LOGGER} "Restoring iptables rules (pre-up)"
/sbin/iptables-restore -c < /etc/iptables.rules
;;
pre-down)
if [ ! -x /sbin/iptables-save ]; then
${LOGGER} "No program exists to save iptables rules."
return
fi
${LOGGER} "Saving iptables rules. (pre-down)"
/sbin/iptables-save -c > /etc/iptables.rules
;;
*)
${LOGGER} "Nothing to do for case: ($2)"
;;
esac
rsyslogd
आपकी स्क्रिप्ट चलने से पहले शायद रोक दिया गया हो ? आपsyslog
अपने आउटपुट / त्रुटि सुविधा के रूप में उपयोग कर रहे हैं ।