#1 Le 05/09/2011, à 20:30
- yoyomoony
RunLevel et script /etc/rc2.d/
Bonjour à tous.
J'ai un soucis curieux.
De ce que je sais, tous les scripts de /etc/rc2.d/ sont exécutés quand le système entre en "runlevel 2".
(Cet exemple est pour Debian 6, mais je pense que le runlevel est le même pour tous les Unix et ses dérivés.)
Le contenu du répertoire :
root@openvpn:/etc/rc2.d# ls -l
total 4
-rw-r--r-- 1 root root 677 1 janv. 2011 README
lrwxrwxrwx 1 root root 17 30 août 18:25 S14portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 20 30 août 18:25 S15nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root 17 30 août 18:25 S17rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root 15 30 août 19:11 S19acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 13 30 août 19:11 S19atd -> ../init.d/atd
lrwxrwxrwx 1 root root 14 30 août 19:11 S19cron -> ../init.d/cron
lrwxrwxrwx 1 root root 15 30 août 19:11 S19exim4 -> ../init.d/exim4
lrwxrwxrwx 1 root root 13 2 sept. 12:34 S19ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root 19 5 sept. 16:04 S19openvpn -> /etc/init.d/openvpn
lrwxrwxrwx 1 root root 13 30 août 19:11 S19ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root 18 30 août 19:11 S21bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root 18 30 août 19:11 S22rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 19 30 août 19:11 S22rmnologin -> ../init.d/rmnologin
lrwxrwxrwx 1 root root 23 30 août 19:11 S22stop-bootlogd -> ../init.d/stop-bootlogd
lrwxrwxrwx 1 root root 22 5 sept. 20:23 S30bridge-up -> ../init.d/bridge-up.sh
Je veux que /etc/init.d/bridge-up.sh soit lancé en dernier. Mais visiblement, ce n'est pas le cas (j'ai l'impression que le script n'est pas du tout exécuté.
Je ne suis pas passé par update-rc.d pour installer le script. J'ai juste fais un lien symbolique vers le bon répertoire (Start niveau 30).
Pour info, le contenu du script S30bridge-up (monte un bridge pour OpenVPN, ne respecte pas la syntaxe) :
root@openvpn:/etc/rc2.d# cat S30bridge-up
#!/bin/bash
echo Have a good tiem
echo Hello > /root/init.txt
# Créer une carte virtuelle en mode "ethernet"
openvpn --mktun --dev tap0
# Créer l'interface bridge
brctl addbr br0
# Associer la carte virtuelle ethernet au bridge
brctl addif br0 tap0
# Associer la vrai carte ethernet au bridge
brctl addif br0 eth0
# Activer le mode promisc sur la carte virtuelle et sur la carte réelle
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
# Configurer l'adresse IP du bridge
ifconfig br0 192.168.41.2 netmask 255.255.255.0
# Route par défaut
route add default gw 192.168.41.1 br0
Quelqu'un sait-il où est l'erreur ?
D'avance merci.
Bonne soirée.
Dernière modification par yoyomoony (Le 05/09/2011, à 20:32)
Hors ligne
#2 Le 05/09/2011, à 21:53
- yoyomoony
Re : RunLevel et script /etc/rc2.d/
Hum, je pense qu'update-rc.d n'est plus utilisé pour régler ça.
insserv
remplace
update-rc.d
Hors ligne
#3 Le 06/09/2011, à 12:02
- droopy191
Re : RunLevel et script /etc/rc2.d/
Salut,
Pourquoi ne pas utiliser les directives pre-up, post-up et pre-down dans /etc/network/interfaces ?
je gère comme cela le bridge et le démarrage du vpn
auto eth0
iface eth0 inet manual
# bridge eth0 sur br0 pour Openvpn
auto br0
iface br0 inet static
address 192.168.10.10
netmask 255.255.255.0
broadcast 192.168.10.255
gateway 192.168.10.1
pre-up /etc/openvpn/bridge.sh br0 eth0 tap0 up && /etc/init.d/openvpn start ebox-bridge
pre-down /etc/init.d/openvpn stop
post-down /etc/openvpn/bridge.sh br0 eth0 tap0 down
Je vous passe le script bridge.sh si besoin.
Hors ligne
#4 Le 06/09/2011, à 12:14
- yoyomoony
Re : RunLevel et script /etc/rc2.d/
Salut droopy191 et merci pour ta réponse.
Oui tu as raison, je pourrais utiliser /etc/network/interfaces pour gérer cela. Et c'est probablement ce que je vais faire.
Néanmoins, j'aimerais pouvoir régler plus finement l'ordre d’exécution de mes scripts.
Gérer ce cas précis dans le fichier de conf' des interfaces est une bonne chose, mais pour mes autres programmes, ça ne sera pas toujours le cas.
Je suis juste curieux.
Hors ligne
#5 Le 06/09/2011, à 14:21
- droopy191
Re : RunLevel et script /etc/rc2.d/
Pour du réseau, le fichier interface est amha le plus adapté mais ce n'est pas une méthode générique en effet.
( et je trouve crade de mettre des ips en dur pour dans un script d'init)
Je pense que ca ne marche pas à cause de votre script, il ne respecte pas les minimums de script d'init.
Voyez ici
Script d'init debian
typiquement la prise en compte des paramètres start, stop, reload
Voyez aussi Standard LSB
Partez d'un fichier d'init existant dans /etc/ini.d et adaptez ( attention à la gestion des dépendances de démarrage )
Dernière modification par droopy191 (Le 06/09/2011, à 14:24)
Hors ligne