faut faire un service "template" et instancier pour chaque port.
Un unit systemd de type template a un '@' a la fin du nom du fichier avant le ".".
Le parametre du template est toujours %i ou (%I)( voir
https://www.freedesktop.org/software/systemd/man/systemd.unit.html )
exemple:
#creer
/etc/systemd/system/iperf3-server@.service avec dedans:
[Unit]
Description=iperf3 server on port %i
After=syslog.target network.target
[Service]
ExecStart=/usr/local/bin/iperf3 -s -1 -p %i
Restart=always
RuntimeMaxSec=3600
User=iperf
[Install]
WantedBy=multi-user.target
DefaultInstance=5201
# penser daemon-reload a chaque modif du fichier
sudo systemctl daemon-reload
Le "Restart=always" fait que le service est toujours redémarré soit parce qu'il a fini a cause de l'option -1 ou parce que au bout d'une heure (RuntimeMaxSec=3600) le système l’arrête.
# pour activer au boot il faut 'enable' les services (et "disable" donc pour les désactiver)
for p in $(seq 9200 9222); do sudo systemctl enable iperf3-server@$p ; done
# pour démarrer il faut 'start' les services (les services 'enable' vont start au boot tout seuls, la c'est pour lancer manuellement).
for p in $(seq 9200 9222); do sudo systemctl start iperf3-server@$p ; done
# et "stop" pour les arreter.
pour voir l"état et les logs ce sont les commandes usuelles de systemd. par exemple:
sudo systemctl status iperf3-server@*
sudo journalctl -u iperf3-server@*