Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

Envoi automatique de mail après le démarrage par systemd

10 réponses
Avatar
steve
Bonjour,

J'ai un système headless (Rpi) et j'aimerai qu'après chaque démarrage,
un mail soit envoyé avec la sortie de ifconfig afin d'avoir l'ip du
système (qui peut changer de temps en temps Í  cause de dhcp). L'idée est
de ne pas avoir Í  brancher un écran externe si tout Í  coup l'ip Í  changé
(je me connecte via vnc au système).

Voici ce que j'ai fait.

1) création du script d'envoi

cat /home/steve/bin/myip.sh
#!/bin/sh

ifconfig | mutt -s "mon ip" moi@example.com

chmod u+x myip.sh

Le script s'exécute correctement (=mail bien envoyé).

2) création du service dans /lib/systemd/system:

cat mon-ip.service
[Unit]
Description=Envoi ip via mail

[Service]
Type=oneshot
ExecStart=/home/steve/bin/myip.sh

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable mon-ip.service
Created symlink /etc/systemd/system/multi-user.target.wants/mon-ip.service -> /lib/systemd/system/mon-ip.service.
sudo systemctl start mon-ip.service
sudo systemctl status mon-ip.service

mon-ip.service - Envoi ip via mail
Loaded: loaded (/lib/systemd/system/mon-ip.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2021-11-13 16:17:47 CET; 27s ago
Process: 1678 ExecStart=/home/stellarmate/bin/myip.sh (code=exited, status=0/SUCCESS)
Main PID: 1678 (code=exited, status=0/SUCCESS)

nov 13 16:17:47 box systemd[1]: Starting Envoi ip via mail...
nov 13 16:17:47 box systemd[1]: mon-ip.service: Succeeded.
nov 13 16:17:47 box systemd[1]: Started Envoi ip via mail.



3) redémarrage du système

Résultat, pas de mail d'envoyé.

Cela fait un bon moment que je suis dessus, mais lÍ  je sèche.

Qu'y a-t-il de faux ?

Merci pour toute aide.

S

10 réponses

Avatar
NoSpam
Bonjour
utiliser @reboot dans cron et executer le script
Solution personnelle utilisée pour ce type de service: autossh
Daniel
Le 13/11/2021 Í  16:21, steve a écrit :
Bonjour,
J'ai un système headless (Rpi) et j'aimerai qu'après chaque démarrage,
un mail soit envoyé avec la sortie de ifconfig afin d'avoir l'ip du
système (qui peut changer de temps en temps Í  cause de dhcp). L'idée est
de ne pas avoir Í  brancher un écran externe si tout Í  coup l'ip Í  changé
(je me connecte via vnc au système).
Voici ce que j'ai fait.
1) création du script d'envoi
cat /home/steve/bin/myip.sh
#!/bin/sh
ifconfig | mutt -s "mon ip"
chmod u+x myip.sh
Le script s'exécute correctement (=mail bien envoyé).
2) création du service dans /lib/systemd/system:
cat mon-ip.service
[Unit]
Description=Envoi ip via mail
[Service]
Type=oneshot
ExecStart=/home/steve/bin/myip.sh
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable mon-ip.service
Created symlink
/etc/systemd/system/multi-user.target.wants/mon-ip.service ->
/lib/systemd/system/mon-ip.service.
sudo systemctl start mon-ip.service
sudo systemctl status mon-ip.service
mon-ip.service - Envoi ip via mail
   Loaded: loaded (/lib/systemd/system/mon-ip.service; enabled; vendor
preset: enabled)
   Active: inactive (dead) since Sat 2021-11-13 16:17:47 CET; 27s ago
  Process: 1678 ExecStart=/home/stellarmate/bin/myip.sh (code=exited,
status=0/SUCCESS)
 Main PID: 1678 (code=exited, status=0/SUCCESS)
nov 13 16:17:47 box systemd[1]: Starting Envoi ip via mail...
nov 13 16:17:47 box systemd[1]: mon-ip.service: Succeeded.
nov 13 16:17:47 box systemd[1]: Started Envoi ip via mail.
3) redémarrage du système
Résultat, pas de mail d'envoyé.
Cela fait un bon moment que je suis dessus, mais lÍ  je sèche.
Qu'y a-t-il de faux ?
Merci pour toute aide.
S
Avatar
Sabri KHEMISSA
--00000000000044c24e05d0adad36
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Bonjour,
Je pense que tu n'es pas ma̓®tre du serveur DHCP. Le cas ̓©ch̓©ant, tu peux
forcer l'attribution d'un IP sur la base d'une adresse MAC.
https://www.itsfullofstars.de/2019/02/assign-a-static-ip-to-dhcp-client/
Pour r̓©pondre ̓  ta question, tu peux utiliser crontab
https://phoenixnap.com/kb/crontab-reboot
L'avantage d'utiliser crontab est de pouvoir lancer p̓©riodiquement ton
script afin de d̓©tecter les changements d'IP dynamique.
Pour rappel, l'attribution d'une IP par DHCP est associ̓©e ̓  un bail. L'IP
peut changer ̓  l'expiration du bail et la nouvelle demande l'IP associ̓©e
sans red̓©marrage du syst̓¨me.
Sabri
On Sat, Nov 13, 2021, 16:39 steve wrote:
Bonjour,
J'ai un syst̓¨me headless (Rpi) et j'aimerai qu'apr̓¨s chaque d̓©marrage,
un mail soit envoy̓© avec la sortie de ifconfig afin d'avoir l'ip du
syst̓¨me (qui peut changer de temps en temps ̓  cause de dhcp). L'id̓©e est
de ne pas avoir ̓  brancher un ̓©cran externe si tout ̓  coup l'ip ̓  chang̓©
(je me connecte via vnc au syst̓¨me).
Voici ce que j'ai fait.
1) cr̓©ation du script d'envoi
cat /home/steve/bin/myip.sh
#!/bin/sh
ifconfig | mutt -s "mon ip"
chmod u+x myip.sh
Le script s'ex̓©cute correctement (=mail bien envoy̓©).
2) cr̓©ation du service dans /lib/systemd/system:
cat mon-ip.service
[Unit]
Description=Envoi ip via mail
[Service]
Type=oneshot
ExecStart=/home/steve/bin/myip.sh
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable mon-ip.service
Created symlink /etc/systemd/system/multi-user.target.wants/mon-ip.service
-> /lib/systemd/system/mon-ip.service.
sudo systemctl start mon-ip.service
sudo systemctl status mon-ip.service
mon-ip.service - Envoi ip via mail
Loaded: loaded (/lib/systemd/system/mon-ip.service; enabled; vendor
preset: enabled)
Active: inactive (dead) since Sat 2021-11-13 16:17:47 CET; 27s ago
Process: 1678 ExecStart=/home/stellarmate/bin/myip.sh (code=exited,
status=0/SUCCESS)
Main PID: 1678 (code=exited, status=0/SUCCESS)
nov 13 16:17:47 box systemd[1]: Starting Envoi ip via mail...
nov 13 16:17:47 box systemd[1]: mon-ip.service: Succeeded.
nov 13 16:17:47 box systemd[1]: Started Envoi ip via mail.
3) red̓©marrage du syst̓¨me
R̓©sultat, pas de mail d'envoy̓©.
Cela fait un bon moment que je suis dessus, mais l̓  je s̓¨che.
Qu'y a-t-il de faux ?
Merci pour toute aide.
S

--00000000000044c24e05d0adad36
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="auto"><div>Bonjour,</div><div dir="auto"><br></div><div dir="auto">Je pense que tu n&#39;es pas ma̓®tre du serveur DHCP. Le cas ̓©ch̓©ant, tu peux forcer l&#39;attribution d&#39;un IP sur la base d&#39;une adresse MAC.</div><div dir="auto"><a href="https://www.itsfullofstars.de/2019/02/assign-a-static-ip-to-dhcp-client/">https://www.itsfullofstars.de/2019/02/assign-a-static-ip-to-dhcp-client/</a></div><div dir="auto"><br></div><div dir="auto">Pour r̓©pondre ̓  ta question, tu peux utiliser crontab</div><div dir="auto"><a href="https://phoenixnap.com/kb/crontab-reboot">https://phoenixnap.com/kb/crontab-reboot</a></div><div dir="auto"><br></div><div dir="auto">L&#39;avantage d&#39;utiliser crontab est de pouvoir lancer p̓©riodiquement ton script afin de d̓©tecter les changements d&#39;IP dynamique.</div><div dir="auto"><br></div><div dir="auto">Pour rappel, l&#39;attribution d&#39;une IP par DHCP est associ̓©e ̓  un bail. L&#39;IP peut changer ̓  l&#39;expiration du bail et la nouvelle demande l&#39;IP associ̓©e sans red̓©marrage du syst̓¨me.</div><div dir="auto"><br></div><div dir="auto">Sabri<br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sat, Nov 13, 2021, 16:39 steve &lt;<a href="mailto:"></a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bonjour,<br>
<br>
J&#39;ai un syst̓¨me headless (Rpi) et j&#39;aimerai qu&#39;apr̓¨s chaque d̓©marrage,<br>
un mail soit envoy̓© avec la sortie de ifconfig afin d&#39;avoir l&#39;ip du<br>
syst̓¨me (qui peut changer de temps en temps ̓  cause de dhcp). L&#39;id̓©e est<br>
de ne pas avoir ̓  brancher un ̓©cran externe si tout ̓  coup l&#39;ip ̓  chang̓©<br>
(je me connecte via vnc au syst̓¨me).<br>
<br>
Voici ce que j&#39;ai fait.<br>
<br>
1) cr̓©ation du script d&#39;envoi<br>
<br>
cat /home/steve/bin/myip.sh<br>
#!/bin/sh<br>
<br>
ifconfig | mutt -s &quot;mon ip&quot; <a href="mailto:" target="_blank" rel="noreferrer"></a><br>
<br>
chmod u+x myip.sh<br>
<br>
Le script s&#39;ex̓©cute correctement (=mail bien envoy̓©). <br>
<br>
2) cr̓©ation du service dans /lib/systemd/system:<br>
<br>
cat mon-ip.service<br>
[Unit]<br>
Description=Envoi ip via mail<br>
<br>
[Service]<br>
Type=oneshot<br>
ExecStart=/home/steve/bin/myip.sh<br>
<br>
[Install]<br>
WantedBy=multi-user.target<br>
<br>
sudo systemctl daemon-reload<br>
sudo systemctl enable mon-ip.service<br>
Created symlink /etc/systemd/system/multi-user.target.wants/mon-ip.service -&gt; /lib/systemd/system/mon-ip.service.<br>
sudo systemctl start mon-ip.service<br>
sudo systemctl status mon-ip.service<br>
<br>
mon-ip.service - Envoi ip via mail<br>
͂  ͂  Loaded: loaded (/lib/systemd/system/mon-ip.service; enabled; vendor preset: enabled)<br>
͂  ͂  Active: inactive (dead) since Sat 2021-11-13 16:17:47 CET; 27s ago<br>
͂  ͂ Process: 1678 ExecStart=/home/stellarmate/bin/myip.sh (code=exited, status=0/SUCCESS)<br>
͂  Main PID: 1678 (code=exited, status=0/SUCCESS)<br>
<br>
nov 13 16:17:47 box systemd[1]: Starting Envoi ip via mail...<br>
nov 13 16:17:47 box systemd[1]: mon-ip.service: Succeeded.<br>
nov 13 16:17:47 box systemd[1]: Started Envoi ip via mail.<br>
<br>
<br>
<br>
3) red̓©marrage du syst̓¨me<br>
<br>
R̓©sultat, pas de mail d&#39;envoy̓©.<br>
<br>
Cela fait un bon moment que je suis dessus, mais l̓  je s̓¨che.<br>
<br>
Qu&#39;y a-t-il de faux͂ ?<br>
<br>
Merci pour toute aide.<br>
<br>
S<br>
<br>
<br>
</div></div></div>
--00000000000044c24e05d0adad36--
Avatar
steve
Salut,
Le 13-11-2021, Í  16:42:49 +0100, NoSpam a écrit :
Bonjour
utiliser @reboot dans cron et executer le script

Merci, je n'avais pas pensé Í  cette solution simple (qui marche, je
viens de tester). Mais ça ne répond pas Í  mon problème initial :)
@plus
S
Avatar
steve
Le 13-11-2021, Í  17:00:28 +0100, Sabri KHEMISSA a écrit :
Bonjour,
Je pense que tu n'es pas maÍ®tre du serveur DHCP. Le cas échéant, tu
peux forcer l'attribution d'un IP sur la base d'une adresse MAC.
[1]https://www.itsfullofstars.de/2019/02/assign-a-static-ip-to-dhcp-cli

Oui je sais comment attribuer une IP fixe, mais ça ne marche que dans un
environnement précis.
ent/
Pour répondre Í  ta question, tu peux utiliser crontab
[2]https://phoenixnap.com/kb/crontab-reboot

Oui, ça marche en effet.
Merci
@plus
S
Avatar
Sabri KHEMISSA
--000000000000840d8e05d0ae8521
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Afin de te simplifier la vie... tu peux aller plus loin en envoyant un mail
uniquement lorsque l'IP change entre deux ex̓©cutions d'un crontab.
Le contenu de ce post est ̓  adapter ̓  ton contexte :
https://askubuntu.com/questions/374894/server-script-that-sends-an-email-every-time-the-global-ip-changes
--000000000000840d8e05d0ae8521
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr"><div>Afin de te simplifier la vie... tu peux aller plus loin en envoyant un mail uniquement lorsque l&#39;IP change entre deux ex̓©cutions d&#39;un crontab.</div><div>Le contenu de ce post est ̓  adapter ̓  ton contexte : <a href="https://askubuntu.com/questions/374894/server-script-that-sends-an-email-every-time-the-global-ip-changes">https://askubuntu.com/questions/374894/server-script-that-sends-an-email-every-time-the-global-ip-changes</a></div></div>
--000000000000840d8e05d0ae8521--
Avatar
Christophe Maquaire
Le samedi 13 novembre 2021 Í  16:21 +0100, steve a écrit :
Bonjour,

Bonjour,
Je ne suis pas très au point Í  propos de systemd, mais j'ajouterais
2) création du service dans /lib/systemd/system:
cat mon-ip.service
[Unit]
Description=Envoi ip via mail

After=network.target
[Service]
Type=oneshot
ExecStart=/home/steve/bin/myip.sh
[Install]
WantedBy=multi-user.target
Merci pour toute aide.

De rien et peut-être inutile.
S

Christophe
Avatar
steve
Le 14-11-2021, Í  12:15:38 +0100, Christophe Maquaire a écrit :
Le samedi 13 novembre 2021 Í  16:21 +0100, steve a écrit :
Bonjour,
J'ai un système headless (Rpi) et j'aimerai qu'après chaque démarrage,
un mail soit envoyé avec la sortie de ifconfig afin d'avoir l'ip du
système (qui peut changer de temps en temps Í  cause de dhcp). L'idée
est

Sinon tu peux laisser dhcpd ou dhclient faire le boulot via les hooks

Merci, je ne connaissais pas.
Avatar
Roberto C. Sánchez
On Sat, Nov 13, 2021 at 05:34:01PM +0100, steve wrote:
Salut,
Le 13-11-2021, Í  16:42:49 +0100, NoSpam a écrit :
Bonjour
utiliser @reboot dans cron et executer le script

Merci, je n'avais pas pensé Í  cette solution simple (qui marche, je
viens de tester). Mais ça ne répond pas Í  mon problème initial :)

Désolé de répondre Í  un très vieux fil.
D'une autre manière, tu peux utiliser /etc/rc.local qui est exécuté Í 
la fin de chaque démarrage. Par exemple:
/usr/local/bin/myip.sh || exit 0
Salut,
-Roberto
--
Roberto C. Sánchez
Avatar
NoSpam
Bonjour
Le 09/04/2022 Í  14:29, Roberto C. Sánchez a écrit :
On Sat, Nov 13, 2021 at 05:34:01PM +0100, steve wrote:
Salut,
Le 13-11-2021, Í  16:42:49 +0100, NoSpam a écrit :
Bonjour
utiliser @reboot dans cron et executer le script

Merci, je n'avais pas pensé Í  cette solution simple (qui marche, je
viens de tester). Mais ça ne répond pas Í  mon problème initial :)

Désolé de répondre Í  un très vieux fil.
D'une autre manière, tu peux utiliser /etc/rc.local qui est exécuté Í 
la fin de chaque démarrage. Par exemple:
/usr/local/bin/myip.sh || exit 0

ce fichier n'est plus exécuté avec systemd sauf a créer un service qui
imiterait
--
Daniel
Avatar
Roberto C. Sánchez
On Sat, Apr 09, 2022 at 03:35:12PM +0200, NoSpam wrote:
Bonjour
Le 09/04/2022 Í  14:29, Roberto C. Sánchez a écrit :
On Sat, Nov 13, 2021 at 05:34:01PM +0100, steve wrote:
> Salut,
>
> Le 13-11-2021, Í  16:42:49 +0100, NoSpam a écrit :
>
> > Bonjour
> >
> > utiliser @reboot dans cron et executer le script
> Merci, je n'avais pas pensé Í  cette solution simple (qui marche, je
> viens de tester). Mais ça ne répond pas Í  mon problème initial :)
>
>
Désolé de répondre Í  un très vieux fil.
D'une autre manière, tu peux utiliser /etc/rc.local qui est exécuté Í 
la fin de chaque démarrage. Par exemple:
/usr/local/bin/myip.sh || exit 0

ce fichier n'est plus exécuté avec systemd sauf a créer un service qui
imiterait

Je ne le savais pas.
Sur mon PC (de l'année 2016 et qui a commencé avec Jessie et qui puis a
eu des mises Í  jours vers stretch et buster), il y a le fichier
/etc/rc.local. Je pensais que ce fichier était toujours installé sur les
nouvelles installations.
Je viens d'installer un chroot avec buster et un autre chroot avec
bullseye. Pas de fichier /etc/rc.local. J'ai aussi installé une machine
virtuelle avec bullseye sous qemu. Pas de fichier /etc/rc.local. Je
pense que tu as raison. Le fichier /etc/rc.local n'est plus inclu quand
on fait une nouvelle installation.
Désolé pour la confusion.
Salut,
-Roberto
--
Roberto C. Sánchez