Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/02/2021, à 15:23

olitask

lancer un script ou cron au demarrage

Bonjour.

j'ai besoin d'aide pour écrire mon script

Dans le but de recycler un rpi2 et une clé wifi netgear, j'ai installé ubuntu serveur 20.04. La clé wifi est un peu récalcitrante, elle m'oblige à me logger puis taper 3 commandes afin de se connecter à mon réseau wifi. Je souhaite automatiser tout ça sans avoir besoin de me logger. j'avais ouvert un fil dans la partie wifi, mais je devais être au mauvais endroit... )

Pour l'instant j'ai mis les commandes dans crontab:

sudo crontab -e
# m h  dom mon dow   command
@reboot /bin/sleep 30 && ip link set wlan0 up
@reboot /bin/sleep 65 && wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
@reboot /bin/sleep 70 && dhclient wlan0

mais ça ne fonctionne pas.

J'avais mis ces commandes dans un fichier etc/init.d/rc.local  puis fait un chmod +x mais ca n'a pas fonctionné non plus !

Peut être dans un script ?  avec reconnexion si perte du réseau ? et comment le lancer ? cron ? mais là c'est trop difficile pour moi tout seul, j'ai besoin d'aide.

A vot bon cœur  m'sieu-d'am,    Olivier

Hors ligne

#2 Le 08/02/2021, à 17:27

grandtoubab

Re : lancer un script ou cron au demarrage

Salut
Avec le systeme de démarrage systemd il est facile de lancer un script en se créeant un service systemd

https://www.freedesktop.org/software/sy … rvice.html
Voir le wiki Archlinux très bien fait https://wiki.archlinux.fr/Systemd

un exemple de la façon dont je lance mon script de mise-à-jour au démarrage du PC

/etc/systemd/system/maj.service

[Unit]
Description=Mise à jour périodique
After=exim4.service
Requires=NetworkManager-wait-online.service
[Install]
WantedBy=graphical.target
[Service]
Type=oneshot
ExecStart=/opt/update-perso
systemctl status maj.service
● maj.service - Mise à jour périodique
     Loaded: loaded (/etc/systemd/system/maj.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Mon 2021-02-08 13:12:36 CET; 4h 16min ago
    Process: 5302 ExecStart=/opt/update-perso (code=exited, status=0/SUCCESS)
   Main PID: 5302 (code=exited, status=0/SUCCESS)
        CPU: 2min 52.162s

févr. 08 13:09:28 debian systemd[1]: Starting Mise à jour périodique...
févr. 08 13:09:28 debian update-perso[5302]: Mise à jour des listes apt
févr. 08 13:11:31 debian update-perso[5302]:  apt full-upgrade
févr. 08 13:12:07 debian runuser[6801]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:07 debian runuser[6801]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:07 debian runuser[6823]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:08 debian runuser[6823]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:08 debian runuser[6889]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:08 debian runuser[6889]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:24 debian runuser[7968]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:25 debian runuser[7968]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:25 debian runuser[7990]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:25 debian runuser[7990]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:25 debian runuser[8057]: pam_unix(runuser:session): session opened for user debian-security-support(uid=126) by (uid>
févr. 08 13:12:25 debian runuser[8057]: pam_unix(runuser:session): session closed for user debian-security-support
févr. 08 13:12:26 debian update-perso[5302]:  dpkg --audit
févr. 08 13:12:26 debian update-perso[5302]:  apt clean
févr. 08 13:12:26 debian update-perso[5302]:  apt purge
févr. 08 13:12:31 debian update-perso[5302]:  listage occupation du disque après nettoyage
févr. 08 13:12:31 debian update-perso[5302]: listage des paquets obsolètes et locaux
févr. 08 13:12:34 debian update-perso[5302]: mail envoyé à root par /opt/update-perso
févr. 08 13:12:34 debian update-perso[5302]: temporisation
févr. 08 13:12:36 debian systemd[1]: Finished Mise à jour périodique.
févr. 08 13:12:36 debian systemd[1]: maj.service: Consumed 2min 52.162s CPU time.
.

Dernière modification par grandtoubab (Le 08/02/2021, à 17:32)


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#3 Le 09/02/2021, à 18:12

olitask

Re : lancer un script ou cron au demarrage

Bonsoir

alors j'ai essayé, mais j'ai echoué. Voilà ce que j'ai fait :
crée un fichier /etc/systemd/netgear.conf  avec à l'interieur :

[Unit]
Description=Lance une mise à jour de l'ordinateur quinze minutes après le démarrage de la machine et  itère toutes le>
[Timer]
OnBootSec=1minutes
# le service démarrera 1 minutes après le démarrage de la machine 
Persistent=true

[Service]
User=root
ExecStart=ip link set wlan0 up && wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf && dhclient wlan0
Type=oneshot

lancé la commande : systemctl enable netgear.service
il me répond : Failed to enable unit: Unit file netgear.service does not exist.

J'avoue ne pas tout avoir compris...
Olivier

Hors ligne

#4 Le 10/02/2021, à 09:06

grandtoubab

Re : lancer un script ou cron au demarrage

les services sont dans /etc/systemd/system


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#5 Le 10/02/2021, à 09:19

Sciensous

Re : lancer un script ou cron au demarrage

je n'y connais pas grand chose, mais j'ai l'impression que c'est un problème de nom de fichier:
créé: /etc/systemd/netgear.conf 
lancé: /etc/systemd/netgear.service

aux connaisseurs: faut-il que le fichier créé soit obligatoirement en .service ?

@olitask: renomme ton .conf en .service, et met le dans /etc/systemd/system et retente
cool

Dernière modification par Sciensous (Le 10/02/2021, à 09:20)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 10/02/2021, à 18:50

olitask

Re : lancer un script ou cron au demarrage

Bonjour/bonsoir   et encore merci pour l'aide...

J'ai copié mon script ( qui fonctionne si je le lance une fois loggé avec  bash wifi_boot.sh dans un fichier : /home/ubuntu/wifi_boot.sh  avec dedans:

#!/bin/bash
ip link set wlan0 up
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
dhclient wlan0

Puis recopié le fichier netgear.service dans /etc/systemd/system avec dedans :  ( j'avais fait des doublons avec netgear.conf et .service  ; des fois que ... )

[Unit]
Description=Lance une mise à jour de l'ordinateur quinze minutes après le démarrage de la machine et  itère toutes les t>
[Timer]
OnBootSec=1minutes
# le service démarrera 1 minutes après le démarrage de la machine 
Persistent=true

[Service]
User=root
ExecStart=/home/ubuntu/wifi_boot.sh
Type=oneshot

j'ai fait un     ubuntu@ubuntu:~$ systemctl enable netgear.service

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ===
Authentication is required to manage system service or unit files.
Authenticating as: Ubuntu (ubuntu)
Password: 
==== AUTHENTICATION COMPLETE ===
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Authenticating as: Ubuntu (ubuntu)
Password: 
==== AUTHENTICATION COMPLETE ===
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
 
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.

Je comprend bien qu'il manque quelque chose dans le fichier netgear.service mais quoi ?

Olivier

Hors ligne

#7 Le 11/02/2021, à 08:59

grandtoubab

Re : lancer un script ou cron au demarrage

un service systeme ça se gère avec les droits root, soit directement en user root, soit avec sudo

Avant de penser à l'activer il faut verifier qu'il fonctionne

sudo systemctl start netgear.service

La signification des paramètres est ici
https://www.freedesktop.org/software/sy … rvice.html


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne