Skip to content

Instantly share code, notes, and snippets.

@VTacius
Last active December 5, 2023 19:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VTacius/bae13eb7cde65f3e706d9a08798ec506 to your computer and use it in GitHub Desktop.
Save VTacius/bae13eb7cde65f3e706d9a08798ec506 to your computer and use it in GitHub Desktop.
Type=Oneshot en systemd

Usualmente relacionado con scripts que se ejecutan una sola vez en el sistema. Veamos un ejemplo que podría resolverse de otras formas: La configuración del Masquerading en Iptables. El script es tan sencillo como lo siguiente

cat /usr/local/sbin/firewall.sh 
#!/bin/bash
iptables -t nat -X
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o enp1s0 -j MASQUERADE

echo 0

Ese echo es necesario para que el script sea valido para systemd

El archivo .systemd queda de la siguiente manera:

cat /lib/systemd/system/firewall.service 
[Unit]
Description=Configura firewall en el sistema
After=networking.service
Requires=networking.service

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/firewall.sh

[Install]
WantedBy=multi-user.target

Ahora puede activarse/correr el servicio de la siguiente forma:

systemctl enable --now firewall.service

Por otra parte, RemainAfterExit=yes cambia un poco el comportamiento del servicio. Se queda como activo mientras después de ejecutados, y es posible que el execStop se ejecute con un stop del servicio, ya sea de parte del usuario o del sistema

Fuente:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment