Page 1 sur 1
[netctl] Utilisation de netctl-ifplugd (résolu)
Publié : mer. 10 avr. 2013, 21:52
par Anghirrim
Bonsoir,
En cours de migration vers netctl, tout se passe bien. Mon profil réseau filaire dhcp ainsi que mon profil wifi maison fonctionnent.
Le dhcp est démarré automatiquement grâce à:
J'aimerai remplacer cela par un:
Du coup, j'imagine qu'il faut adapter le netctl.action à mes profils existants, mais ça a l'air un poil plus compliqué que le ifplugd.action que j'avais jusque là?

De plus, le ifplugd.conf doit-il être modifié?
Mon ifplugd.action actuel est:
Code : Tout sélectionner
#!/bin/bash
case "$2" in
up)
netcfg lan_maison_static
netcfg down wifi_maison
;;
down)
netcfg wifi_maison
netcfg down lan_maison_static
;;
esac
Question subsidiaire, un "netctl stop wifi_maison" coupe bien la connection wifi, mais ne désactive pas la carte (conky capte encore une émission). Alors que "netctl start wifi_maison" la démarre bien si elle ne l'est pas. Est-il possible de faire que "stop" coupe et la connection, et le signal?
Merci d'avance pour votre aide!
Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi
Publié : mer. 10 avr. 2013, 21:55
par FoolEcho
Je n'ai pas touché au ifplugd.action sur mon portable (en même temps, je me sers essentiellement du wifi avec).
Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi
Publié : mer. 10 avr. 2013, 21:59
par Anghirrim
Mon ifplugd.action est de toute manière utilisé pour netcfg. netctl.action prend-il le pas dessus si ifplugd est lancé via le service netctl?
Je n'ai pas trouvé de ligne dans ifplugd.conf qui dise quel fichier .action ifplugd doit lire.
Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi
Publié : jeu. 11 avr. 2013, 17:50
par Anghirrim
Je relisais
mon premier sujet sur ifplugd, quand ce dernier était lié à netcfg.
Il semble que je puisse toujours utiliser mon ifplugd.action en le modifiant un peu.
Code : Tout sélectionner
#!/bin/bash
case "$2" in
up)
netctl restart lan_maison_dhcp
netctl stop wifi_maison
;;
down)
netctl restart wifi_maison
netctl stop lan_maison_dhcp
;;
esac
Ça devrait fonctionner. je tente ce soir.
Re: [netctl] Utilisation de netctl-ifplugd
Publié : jeu. 11 avr. 2013, 21:35
par Anghirrim
Bon, après tentative, voici le statut:
- Désactivation de tous les profils netctl potentiellement chargés (netctl disable mesprofils)
- Etablissement de ifplugd avec "systemctl enable
netctl-ifplugd@eth0.service"
- Remplissage du /etc/ifplugd/netctl.action avec le contenu de mon dernier post
- Reboot et ifplugd détecte bien le statut "up" de eth0 et tente de lancer le contenu de /etc/ifplugd/netctl.action
Seulement, une fois le démarrage fini, pas de connexion établie, et voici le retour de "journalctl -b":
Code : Tout sélectionner
journalctl dernier boot:
avril 11 21:17:21 archasus ifplugd[281]: ifplugd 0.28 initializing.
avril 11 21:17:22 archasus ifplugd[281]: Using interface eth0/10:BF:48:27:35:58 with driver <atl1c> (version: 1.0.1.1-NAPI)
avril 11 21:17:22 archasus ifplugd[281]: Using detection mode: SIOCETHTOOL
avril 11 21:17:22 archasus ifplugd[281]: Initialization complete, link beat detected.
avril 11 21:17:22 archasus ifplugd[281]: Executing '/etc/ifplugd/netctl.action eth0 up'.
avril 11 21:17:22 archasus ifplugd[281]: client: Job for netctl@lan_maison_dhcp.service failed. See 'systemctl status netctl@lan_maison_
avril 11 21:17:22 archasus ifplugd[281]: Program executed successfully.
......
avril 11 21:17:23 archasus network[302]: Starting network profile 'lan_maison_dhcp'...
avril 11 21:17:23 archasus network[302]: The interface of network profile 'lan_maison_dhcp' is already up
Puis, juste par acquis de conscience, le "systemctl status netctl@lan_maison_dhcp".
Code : Tout sélectionner
[thomas@archasus ~]$ systemctl status netctl@lan_maison_dhcp
netctl@lan_maison_dhcp.service - Networking for netctl profile lan_maison_dhcp
Loaded: loaded (/usr/lib/systemd/system/netctl@.service; static)
Active: failed (Result: exit-code) since jeu. 2013-04-11 21:16:55 CEST; 4min 27s ago
Docs: man:netctl.profile(5)
Process: 302 ExecStart=/usr/lib/network/network start %I (code=exited, status=1/FAILURE)
avril 11 21:17:23 archasus network[302]: Starting network profile 'lan_maison_dhcp'...
avril 11 21:17:23 archasus network[302]: The interface of network profile 'lan_maison_dhcp' is already up
Je ne comprends pas là... help??
A noter que si je redémarre après un "netctl enable lan_maison_dhcp" (tout en ayant désactivé ifplugd), mon réseau est bien connecté (cependant le service met 26 secondes à se lancer selon systemd-analyze).
Re: [netctl] Utilisation de netctl-ifplugd
Publié : sam. 13 avr. 2013, 12:16
par Anghirrim
Personne qui utilise ifplugd et netctl (ou au moins tenté)?
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 11:33
par Anghirrim
Bon, je pense que ce soir marquera le retour à netcfg. Démarrage ultra long de dhcp avec netctl (20 secondes dans la vue), impossible d'utiliser mon profil IP fixe, ifplugd qui n'arrive pas à lancer le DHCP au démarrage.
Le tout sans message d'erreur ou d'explication dans les logs, ça fait un poil trop pour moi.
Si jamais il y a des joueurs pour ifplugd, je prends

.
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 11:52
par FoolEcho
Pour le profil avec IP fixe, regarde le wiki (j'ai eu le même problème, c'est simplement qu'il faut rajouter le masque de réseau avec les addresses).
Sinon, j'utilise netctl-ifplugd et netctl-auto sans problèmes, mais je ne cherche pas à couper wifi ou filiaire.

Mais, idée en l'air, je pense que ton problème est lié au contenu du .action (c'est notamment l'histoire de latence qui me fait dire ça), lorsque netctl-ifplugd ou netctl-auto fonctionnent ils ne sont pas censés lancés les profils via netctl@<profile> (c'est la grosse différence avec netcfg), il faut désactiver ces derniers, sans quoi ça fait doublon (d'où accès plus lent, problème avec le wifi), donc le fait de lancer le service à ce niveau, pas sûr que ça passe bien...
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 12:26
par Anghirrim
Salut,
Pour l'IP fixe, c'est ma box qu'il n'arrive pas à joindre "can't join gateway '192.168.1.1''", ou un truc comme ça. Je vais voir le Wiki.
Pour ifplugd, tu penses qu'il faut que j'utilise le .action d'origine?
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 13:33
par FoolEcho
Anghirrim a écrit :Pour l'IP fixe, c'est ma box qu'il n'arrive pas à joindre "can't join gateway '192.168.1.1''", ou un truc comme ça. Je vais voir le Wiki.
Et c'est bien la solution que je te propose.
Anghirrim a écrit :Pour ifplugd, tu penses qu'il faut que j'utilise le .action d'origine?
En tous cas pour vérifier que tu n'as pas de problème de latence ou de connexion.
Après, je ne me suis jamais trop intéressé au ifplugd.action donc je ne sais pas trop (je n'ai d'ailleurs pas trop saisi ce que tu cherches à faire: quand le cable est retiré eth/filiaire est déconnecté, autrement, il se connecte et peu importe
à mon avis que le wifi tourne à ce moment là). Toujours est-il que le netctl.action d'origine ne lance pas netctl ('sais pas comment il fait par contre, mais il n'utilise pas network.target c'est certain).
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 14:47
par Anghirrim
Je me suis mal exprimé pardon. Je parlais bien d'utiliser le netctl.action d'origine, celui qui est très rempli et "complexe". De toute manière, netctl-ifplugd lit le netctl.action.
Mais du coup... pour le modifier je suis un peu à la rue. Je remplace tous les "$profile" par mes profiles (lan_maison_dhcp et lan_maison_static)??
Code : Tout sélectionner
#!/bin/bash
#
# ifplugd.action script for netctl
. /usr/lib/network/globals
PROFILE_FILE="$STATE_DIR/ifplugd_$1.profile"
case "$2" in
up)
# Look for a dhcp based profile to try first
# dhcp can actually outright fail, whereas
# it's difficult to tell if static succeeded
# Also check profile is same iface and is right connection
echo "up"
declare -a preferred_profiles
declare -a dhcp_profiles
declare -a static_profiles
while read -r profile; do
(
echo "Reading profile '$profile'"
source "$PROFILE_DIR/$profile"
[[ "$Interface" == "$1" && "$Connection" == "ethernet" ]] || continue
is_yes "${AutoWired:-no}" && exit 1 # user preferred AUTO profile
[[ "$IP" == "dhcp" ]] && exit 2 # dhcp profile
exit 3 # static profile
)
case $? in
1) preferred_profiles+=("$profile");;
2) dhcp_profiles+=("$profile");;
3) static_profiles+=("$profile");;
esac
done < <(list_profiles)
if [[ ${#preferred_profiles[@]} > 1 ]]; then
echo "AutoWired flag for '$1' set in more than one profile (${preferred_profiles[*]})"
fi
for profile in "${preferred_profiles[@]}" "${dhcp_profiles[@]}" "${static_profiles[@]}"; do
if ForceConnect=yes "$SUBR_DIR/network" start "$profile"; then
mkdir -p "$(dirname "$PROFILE_FILE")"
printf "%s" "$profile" > "$PROFILE_FILE"
exit 0
fi
done
;;
down)
if [[ -e "$PROFILE_FILE" ]]; then
if ForceConnect=yes "$SUBR_DIR/network" stop "$(< "$PROFILE_FILE")"; then
rm -f "$PROFILE_FILE"
exit 0
fi
fi
;;
*)
echo "Wrong arguments" > /dev/stderr
;;
esac
exit 1
Pour l'IP statique, on parle donc bien de:
Pour les profils en IP statique, vous devez spécifier le masque de réseau (netmask) pour chaque IP de Address=, par exemple
Address=('192.168.1.23/24' '192.168.1.87/24').
Soit, rajouter un
/24.
Effectivement un peu de recherche me donne
ça.
Je vais essayer de modifier ça on verra. Je te redis. Merci,
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 19:53
par FoolEcho
Le hic est que netctl-ifplugd est bien plus orienté filiaire que ça ne l'était avec netcfg.
Une idée en l'air (pas testé donc je dis peut-être n'importe quoi) serait peut-être de laisser netctl-ifplugd tel quel et de rajouter les options ExecUpPost= et ExecDownPre= dans ton profil filiaire (et là rien ne t'empêche de lancer ou de couper le profil wifi via netctl, voire manuel de netctl.profile). Tu établis les services pour ton profil wifi d'une part et ifplugd d'autre part au démarrage (ça élimine la latence): si l'ethernet se lance ça coupe le profil wifi (ExecUpPost=netctl stop <wifi>), s'il est déconnecté par la suite ou non actif au départ, le wifi (re)démarre normalement (ExecUpPost=netctl start <wifi>).
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 20:25
par Anghirrim
Bonsoir,
C'est effectivement ce type de comportement que je cherche. N'utilisant généralement que ma connexion lan maison en IP fixe, puis ma Wifi maison en cas de déconnexion, je veux que ifplugd gère ce passage wifi/ethernet.
Je n'avais pas envisagé d'utiliser ces deux commandes mais c'est un outil génial! J'étais passé dessus sans tilter lors de la lecture despages de man.
Du coup, je ne règle ifplugd pour qu'il me lance le profil statique en premier, puis le DHCP si le statique échoue.
Tu avais changé quelque chose pour mettre tes noms de profils dans ton netctl.action?
Au fait, le coup du "/24" a fonctionné, merci! Ca m'a permit de passer de 25 secondes pour le réseau à 4 secondes, ce que j'avais avant avec netcfg.
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 20:34
par FoolEcho
Anghirrim a écrit :Tu avais changé quelque chose pour mettre tes noms de profils dans ton netctl.action?
Rien. L'interface est passée à netctl-ifplugd@ qui se débrouille à trouver les profils.
Pour le reste, c'est à tester, hein... sur le papier c'est ce qui me paraît le plus simple avec netctl (instinctif en tout cas, ayant parfois de grosses sautes de logique

).
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 20:47
par Anghirrim
Testé en manuel déjà, ça n'a pas l'air de marcher.
Mon "nouveau" /etc/netctl/lan_maison_static:
Code : Tout sélectionner
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.1.19/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.1.1'
DNS=('80.10.246.130')
ExecUpPost=netctl stop wifi_maison || true
ExecDownPre=netctl start wifi_maison || true
Du coup, après démarrage, je coupe lan_maison_static avec un "netctl stop lan_maison_static". L'ethernet se coupe bien, seulement rien ne se passe pour le wifi (que j'ai lancé juste après sans souci avec un "netctl start wifi_maison").
Un "sudo netctl reenable lan_maison_static" me donne:
Code : Tout sélectionner
[thomas@archasus ~]$ sudo netctl reenable lan_maison_static
rm '/etc/systemd/system/multi-user.target.wants/netctl@lan_maison_static.service'
/etc/netctl/lan_maison_static: ligne9: stop : commande introuvable
/etc/netctl/lan_maison_static: ligne10: start : commande introuvable
ln -s '/etc/systemd/system/netctl@lan_maison_static.service' '/etc/systemd/system/multi-user.target.wants/netctl@lan_maison_static.service'
Etrange non? Il ne reconnait pas stop et start...
Edit: J'ai fait un essai avec seulement un "ExecDownPre=pcmanfm", comme ça au moins c'est visible si la commande fonctionne. Pas d'erreur au "netctl reenable lan_maison_static". Mais ça rend inopérante la commande "sudo netctl stop lan_maison_wifi". Il me suffit de commenter la ligne, lancer un reenable et tout fonctionne normalement...
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 21:04
par FoolEcho
Rajoute des guillemets pour voir:
Code : Tout sélectionner
ExecUpPost='netctl stop wifi_maison || true'
ExecDownPre='netctl start wifi_maison || true'
Re: [netctl] Utilisation de netctl-ifplugd
Publié : lun. 15 avr. 2013, 21:27
par Anghirrim
Du coup:
- Ajout des guillemets
- Test manuel OK
- Etablissement de ifplugd (avec le fichier netctl.action de base)
Tout fonctionne parfaitement. Démarrage rapide, connexion ethernet opérationnelle, si je débranche le cable, le wifi prends le relais. Si je rebranche, le wifi s'arrête, et l'ethernet est opé.
Merci beaucoup pour ton aide!
Reste à comprendre pourquoi la carte wifi reste allumée (signal actif sur mon conky). Je vais ouvrir un sujet séparé.