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 18/07/2020, à 12:00

zerosam1

Création d'un script bash au démarrage concernant une route pas défaut

Bonjour,

je voudrais rendre une route persisstante, mon scrip est simple et fonctionnel.

scrip.sh <=> route add default gw xxx.xxx.xxx.xxx

./script.sh <=> ok

Il s'agit d'un route par défaut pour avoir accès à internet

Par contre, ou faut il le placer pour qu'il soit opérationnel des le démarrage de ma machine?

Je suis sous ubuntu server 18.04

Novice en libre, j'aimerai avoir un petit coup de pouce.

Cordialement, Zerosam1

Hors ligne

#2 Le 18/07/2020, à 12:26

Watael

Re : Création d'un script bash au démarrage concernant une route pas défaut

salut,

utilise netplan
ceci me semble correct, mais je ne suis pas spécialiste réseau.
mais il me parait raisonnable d'utiliser la configuration réseau, plutôt que d'ajouter un script au démarrage.

Dernière modification par Watael (Le 18/07/2020, à 12:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 18/07/2020, à 13:04

bruno

Re : Création d'un script bash au démarrage concernant une route pas défaut

+1
Au choix :
- netplan
- /etc/network/interfaces.d/
- une unité network pour systemd-networkd

Hors ligne

#4 Le 18/07/2020, à 14:05

Zakhar

Re : Création d'un script bash au démarrage concernant une route pas défaut

Le pauvre, vous lui conseillez des trucs invraisemblables !..

Netplan est une horreur inutile. Je présume aussi que le demandeur parle d'un poste de travail et pas d'une installation en mode "serveur", or sur un poste de travail, netplan donne tout à gérer à Network manager, par conséquent l'exemple lié par Watael est inapplicable car il mentionne une configuration où le "renderer" est networkd, ce qui n'est le cas que pour une installation "serveur" sur Ubuntu.

Donc le plus simple est de faire un script, et rajouter un service pour lancer le script.

Le script, par exemple : /etc/init.d/myroute.sh

#! /bin/sh
route add default gw xxx.xxx.xxx.xxx

Note : bash est overkill!.. On met simplement /bin/sh qui va utiliser dash, bien plus léger et rapide sur Ubuntu, car on n'a aucun besoin des "spécificités bash". Pensez à éviter les "bashism" pour les besoins de portabilité.

Ensuite on rajoute un service, par exemple : /etc/systemd/system/myroute.service

[Unit]
Description=Add a route at startup
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh /etc/init.d/myroute.sh

[Install]
WantedBy=multi-user.target

Il reste à activer le service :

sudo systemctl enable /etc/systemd/system/myroute.service

Puis à le démarrer pour la session courante si la route n'est pas déjà ajoutée :

sudo systemctl start /etc/systemd/system/myroute.service

Le fait d'avoir fait "enable" va lancer ensuite le "service" à chaque démarrage.
On peut vérifier que se service s'est bien déroulé avec:

systemctl status /etc/systemd/system/myroute.service

Sur le même principe, on peut lancer n'importe quel service au démarrage.
Il faut adapter les clauses. Là on a mis un "after" sur le fait que le "network" soit prêt, si le service n'est pas lié au réseau on peut adapter.

Dernière modification par Zakhar (Le 18/07/2020, à 14:06)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 18/07/2020, à 14:51

bruno

Re : Création d'un script bash au démarrage concernant une route pas défaut

Le pauvre, vous lui conseillez des trucs invraisemblables !..

C'est l'hôpital qui se fout de la charité wink
Proposer un script bash + un service systemd alors qu'il suffit de rajouter 2 lignes dans un fichier de configuration, c'est quand même gonflé…
Exemple dans /etc/network/interfaces, pour netplan voir le lien donné par Watael :

up ip route add x.x.x.x via x.x.x.y dev ethX
up ip route add default via x.x.x.y

--

Et en plus ton unité systemd ne va probablement pas fonctionner car :

After=network.target

est insuffisant pour s'assurer que l'interface à laquelle doit s'appliquer la route est bien active avec une adresse IP. Il vaut même mieux s'abstenir d'utiliser des unités de service systemd pour faire ce genre de choses. cf. https://www.freedesktop.org/wiki/Softwa … orkTarget/

Dernière modification par bruno (Le 18/07/2020, à 15:05)

Hors ligne

#6 Le 18/07/2020, à 22:20

Watael

Re : Création d'un script bash au démarrage concernant une route pas défaut

Netplan est une horreur inutile.

netplan n'est pas la configuration par défaut sur une installation standard ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 19/07/2020, à 09:07

Zakhar

Re : Création d'un script bash au démarrage concernant une route pas défaut

bruno a écrit :

Et en plus ton unité systemd ne va probablement pas fonctionner car :

After=network.target

est insuffisant pour s'assurer que l'interface à laquelle doit s'appliquer la route est bien active avec une adresse IP.

Ça fonctionne parfaitement chez moi (avec des règles iptables ) !
Faire tourner après network.target est pour s'assurer qu'on a bien les interfaces up.
Si ce n'est effectivement pas suffisant, on peut utiliser la "target" network ready.

Aussi l'intérêt de la chose est que c'est "généralisable" à d'autres choses qu'on veut lancer au démarrage, en adaptant juste les clauses "After"/"Before" à ce qu'on veut faire.

bruno a écrit :

Exemple dans /etc/network/interfaces, pour netplan voir le lien donné par Watael :

/etc/network/interfaces est "obsolete" et n'est plus utilisé (en standard) depuis netplan/systemd

Mais effectivement, si on veut faire "puriste", une route irait mieux dans une unité "network" de systemd (cf lien ci-dessous, où j'utilise une unité ".network" pour la clause EmitDNS). Je vous laisse guider avec la bonne syntaxe qui réussit à contourner Netplan/NetworkManager. tongue

En l'occurrence, s'agissant d'un Desktop (probablement) c'est plutôt une configuration NetworkManager qu'il faudrait faire. Dans ce cas, c'est peut-être même "encore plus simple" que ce que propose Watael puisque tout se fait "à la souris" sur l'interface de paramétrage du réseau. Par exemple, dans "Paramètres filaires", si on clique sur le paramétrage derrière "Connecté à 1000Mbps" on a un onglet IPV4 qui permet de rajouter des routes.

Donc c'est sans doute là qu'il faut intervenir dans le cas précis, avec AUCUN "fichier de configuration". tongue

Je vous laisse expérimenter (et encore une fois c'est moins "général" pour la réponse à "je veux faire une action automatique au démarrage").

bruno a écrit :

Proposer un script bash

C'est un détail, mais j'ai pourtant bien insisté, tu as lu en diagonale ! Ce n'est PAS un script bash ! C'est un script shell (portable) puisque vue la simplicité, on n'a vraiment pas besoin de la lourdeur des particularités de 'bash'. Ça serait bien que le vocabulaire change... je ne me souviens plus de quand dash a remplacé bash en standard dans Ubuntu, mais ce devait être autour de la 10.04 ou 12.04 donc entre 8 et 10 ans...


Watael a écrit :

Netplan est une horreur inutile.

netplan n'est pas la configuration par défaut sur une installation standard ?

Oui, absolument.
Mais regarde ce qu'il y a dans une configuration standard "desktop" :

$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Juste ça et rien d'autre !..

Autrement dit, on passe juste la main à NetworkManager. Si on positionne une route avant cela, pas certain que NetworkManager va la conserver !..
Franchement je ne vois guère l'intérêt de ce "truc" (Netplan). Il n'est pas aussi puissant que NetworkManager et systemd.networkd, du coup, dès que tu dois faire des trucs un peu "pointu" tu dois faire les pieds au mur pour "passer à côté".

Exemple, la configuration de ma "middlebox" : https://gitlab.com/BylonAkila/TOR_Middl … ster/20.04

En l'occurrence on a besoin de trucs assez basiques :
- créer une interface "bridge" factice (sans rien de connecté)
- faire en sorte qu'outre le DHCP, l'interface émette le DNS aussi.

Eh bien la directive "EmitDNS" qui est tout à fait prévue par networkd pour ça, n'a pas d'équivalent netplan. On est donc obligé de faire une configuration partielle Netplan (il sait quand même créer un bridge !), et de compléter avec Systemd. Bref, le truc Netplan ne sert qu'aux "situations très simples" où de toute façon c'est aussi très simple à faire avec NetworkManager et networkd.
Cela rajoute donc une "couche de traduction" dont il faut apprendre le langage, et qui est fort loin de tout couvrir.

Bref... inutile AMHA !

Dernière modification par Zakhar (Le 19/07/2020, à 09:31)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#8 Le 19/07/2020, à 10:42

bruno

Re : Création d'un script bash au démarrage concernant une route pas défaut

Chez moi ça marche n'est pas un argument. On est sur un cas particulier dont on ignore tous les autres paramètres.
Je te renvoie à la doc que j'ai cité (gras ajouté) :

doc systemd a écrit :

    network.target has very little meaning during start-up. It only indicates that the network management stack is up after it has been reached. Whether any network interfaces are already configured when it is reached is undefined.

Par ailleurs on est sur un serveur, donc très probablement sans networkmanager et avec netplan installé par défaut. La définition d'une route c'est un paramètre réseau, cela se fait donc dans la configuration réseau, avec l'outil que l'on veut, ce n'est pas le problème.
Et on ne peut pas se plaindre d'un côté que netplan soit une surcouche inutile, chose avec laquelle je suis d'accord, et de l'autre créer une surcouche inutile avec une unité de service juste pour définir un paramètre réseau.

Hors ligne

#9 Le 19/07/2020, à 19:40

lynn

Re : Création d'un script bash au démarrage concernant une route pas défaut

Bonjour,

Pour ma part, je pense qu'il n'y pas plus simple que de placer son script directement dans /etc/network/if-up.d/.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#10 Le 22/07/2020, à 11:25

zerosam1

Re : Création d'un script bash au démarrage concernant une route pas défaut

Rien de sérieux mais merci quand même.

Hors ligne