View previous topic :: View next topic |
Author |
Message |
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8704 Location: ~Brussels - Belgique
|
Posted: Mon Apr 29, 2013 12:22 pm Post subject: [RESOLU] config dynamique en fonction du réseau ? |
|
|
Hello,
Quand je suis à la maison, je configure le make.conf de mon netbook pour qu'il profite de la puissance supérieure du desktop (FEATURES="distcc", MAKEOPTS="-j7").
Pour le moment, je modifie à la main FEATURES et MAKEOPTS, mais souhaiterais le faire automatiquement
- si (ESSID="maison" OU ethernet) ET desktop dispo => se mettre en mode "distcc"
- sinon => se mettre en mode "stand-alone"
Quelles sont les options possibles ?
- un "hook" postup dans /etc/conf.d/net qui modifie make.conf ?
- un hook "bashrc" dans /etc/portage/env ?
La première option ne fonctionnera que si le desktop est préalablement allumé et disponible ; mais ce n'est pas trop gênant, j'allume souvent le desktop en premier afin de préparer les mises à jour (emerge --sync + recompression d'un portage en squashfs)
La deuxième sera appelée très fréquemment par Portage (peut-être trop)
Y aurait-il un juste milieu selon vous ? Ou une solution du genre "runlevel en fonction du réseau où l'on se trouve" ? _________________ Kind regards,
Xavier Miller
Last edited by xaviermiller on Tue Apr 30, 2013 10:16 am; edited 1 time in total |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8704 Location: ~Brussels - Belgique
|
Posted: Mon Apr 29, 2013 1:02 pm Post subject: |
|
|
Je vais explorer le hook "postup" dans /etc/conf.d/net qui me semble le plus adéquat _________________ Kind regards,
Xavier Miller |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Mon Apr 29, 2013 4:23 pm Post subject: |
|
|
Au pire, un simple restart du service net referait la config, si jamais le netbook était allumé avant le pc. Je ne pense pas que tu fasses beaucoup d'opérations critique nécessitant de maintenir la connexion sur ton notebook lorsque tu décides de faire la mise à jour. |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8704 Location: ~Brussels - Belgique
|
Posted: Mon Apr 29, 2013 6:05 pm Post subject: |
|
|
Je suis parti sur l'option "net et ses hooks". Je dois juste tenter de trouver le point où m'accrocher, de préférence après le DHCP. Au pire, si je ne trouve pas, je mets un hook sur base du ESSID (celui de la maison) et l'interface (ethernet), et je force un mode "pas d'assistance distcc" pour les rares cas où je n'allume pas le desktop pour assister la compil. _________________ Kind regards,
Xavier Miller |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8704 Location: ~Brussels - Belgique
|
Posted: Tue Apr 30, 2013 10:13 am Post subject: |
|
|
C'est résolu élégamment via le script net et l'isolation de la partie variable de make.conf (MAKEOPTS, FEATURES...) dans des fichiers ; un lien symbolique va pointer vers la configuration en fonction du réseau détecté :
- pas de réseau : version stand-alone (MAKEOPTS="-j3", FEATURES="-distcc")
- à la maison (= SSID maison ou ethernet branché + ping du serveur distcc) : MAKEOPTS="-j7" FEATURES= "distcc"
- via un hot-spot restrictif = stand-alone + EVCS_OFFLINE=1
Je crée donc 3 fichiers /etc/portage/variable_conf.XXX et un lien symbolique /etc/portage/variable_conf vers la version courante
Dans make.conf, je mets "source variable_conf".
dans /etc/conf.d/net je mets
/etc/conf.d/net: | modules="wpa_supplicant"
preferred_aps="..."
preup() {
# par défaut : version "stand-alone"
ln -sf variable_conf.out /etc/portage/variable_conf
#truc pour ifplugd
if [[ ${IFACE} == "wlan0" ]]; then
if ifplugstatus | grep -q 'eth0: link beat detected'; then
ewarn "Wired connection on eth0 detected, aborting configuration on ${IFACE}"
return 1
fi
fi
}
postup() {
# A la maison ?
if [[ ${IFACE} == "eth0" || ${SSID} == "ESSID_A_LA_MAISON" ]] ; then
if [[ $(ping -c 1 -q DISTCC_SERVER) == 0 ]] ; then
# serveur DISTCC repéré !
ln -sf variable_conf.distcc /etc/portage/variable_conf
fi
fi
if [[ ${SSID} == "hotspot_connu" ]] ; then
# connexion automatique au hotspot connu (avec envoi user/mot de passe)
/usr/local/bin/hotspot_login.sh
ln -sf variable_conf.hotspot /etc/portage/variable_conf
fi
} |
_________________ Kind regards,
Xavier Miller |
|
Back to top |
|
|
|