[ADD] vpn install : vérifier la présence de vpnc-script
openconnect appelle vpnc-script pour poser les routes et le DNS. Il vient d'un paquet distinct, dont le nom change de famille en famille et qui l'installe à des endroits différents. C'est un FICHIER qu'on cherche, pas un binaire du PATH : le contrôle des binaires ne peut donc pas le voir. Sans lui, la session s'ouvre, openconnect démarre, et l'interface tun n'apparaît jamais. La panne se manifeste trois étages au-dessus du paquet absent, sur un symptôme qui ne l'accuse pas. L'installateur nomme désormais le paquet à poser, par famille de distribution. --- EN --- openconnect calls vpnc-script to lay down routes and DNS. It ships in a separate package whose name varies by family and which installs it at different paths. It is a FILE we look for, not a binary on the PATH, so the binary check cannot see it. Without it the session opens, openconnect starts, and the tun interface never appears. The failure surfaces three stages above the missing package, on a symptom that does not accuse it. The installer now names the package to install, per distribution family. Assisted-by: Claude Opus 5
This commit is contained in:
parent
9d51ee7fac
commit
50187ece85
1 changed files with 35 additions and 2 deletions
|
|
@ -153,14 +153,47 @@ binaries_for() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Le script que openconnect appelle pour poser routes et DNS. Il vient d'un
|
||||||
|
# paquet à part, dont le nom change de famille en famille, et il s'installe à
|
||||||
|
# des endroits différents : c'est un FICHIER qu'on cherche, pas un binaire du
|
||||||
|
# PATH, donc `binaries_for` ne peut pas le voir.
|
||||||
|
#
|
||||||
|
# Sans lui, la session s'ouvre, openconnect se lance, et l'interface tun
|
||||||
|
# n'apparaît jamais : le montage échoue trois étages plus haut, sur un
|
||||||
|
# symptôme qui n'accuse pas le paquet manquant.
|
||||||
|
VPNC_SCRIPT_PATHS="
|
||||||
|
/etc/vpnc/vpnc-script
|
||||||
|
/usr/share/vpnc-scripts/vpnc-script
|
||||||
|
/usr/libexec/openconnect/vpnc-script
|
||||||
|
/usr/lib/openconnect/vpnc-script
|
||||||
|
"
|
||||||
|
|
||||||
|
verify_vpnc_script() {
|
||||||
|
local fam="$1" path package
|
||||||
|
for path in ${VPNC_SCRIPT_PATHS}; do
|
||||||
|
if [ -x "$path" ]; then
|
||||||
|
log "vpnc-script : ${path}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
case "$fam" in
|
||||||
|
rhel|suse) package="vpnc-script" ;;
|
||||||
|
*) package="vpnc-scripts" ;;
|
||||||
|
esac
|
||||||
|
die "vpnc-script introuvable — installer le paquet ${package}"
|
||||||
|
}
|
||||||
|
|
||||||
verify() {
|
verify() {
|
||||||
local driver="$1" missing=""
|
local driver="$1" fam="$2" missing=""
|
||||||
for b in $(binaries_for "$driver"); do
|
for b in $(binaries_for "$driver"); do
|
||||||
command -v "$b" >/dev/null || missing="${missing} ${b}"
|
command -v "$b" >/dev/null || missing="${missing} ${b}"
|
||||||
done
|
done
|
||||||
if [ -n "$missing" ]; then
|
if [ -n "$missing" ]; then
|
||||||
die "toujours absents après installation :${missing}"
|
die "toujours absents après installation :${missing}"
|
||||||
fi
|
fi
|
||||||
|
if [ "$driver" = "openconnect" ]; then
|
||||||
|
verify_vpnc_script "$fam"
|
||||||
|
fi
|
||||||
log "vérifié : tout est en place pour ${driver}"
|
log "vérifié : tout est en place pour ${driver}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,7 +213,7 @@ main() {
|
||||||
for driver in ${drivers}; do
|
for driver in ${drivers}; do
|
||||||
log "── ${driver} ──"
|
log "── ${driver} ──"
|
||||||
install_packages "$fam" "$(packages_for "$driver" "$fam")"
|
install_packages "$fam" "$(packages_for "$driver" "$fam")"
|
||||||
verify "$driver"
|
verify "$driver" "$fam"
|
||||||
done
|
done
|
||||||
disable_autostart
|
disable_autostart
|
||||||
log "Terminé. Monter un tunnel : ./script/vpn/vpn.py up --profile <nom>"
|
log "Terminé. Monter un tunnel : ./script/vpn/vpn.py up --profile <nom>"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue