J'ai essayé de faire en sorte qu'un script s'exécute au démarrage, mais sans succès. crontab
@reboot /bin/sleep 8s && /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1
Le script fonctionne bien si je l'exécute à la main.
#!/bin/bash
# If started as root, then re-start as user "user":
if [ "$(id -u)" -eq 0 ]; then
exec sudo -H -u user $0 "$@"
echo "This is never reached.";
fi
echo "This runs as user $(id -un)";
while [ "true" ]
do
VPNCON=$(/bin/nmcli con | /bin/grep PureVPN_PPTP | /bin/cut -f18 -d " ")
if [[ $VPNCON != ens3 ]]; then
/bin/echo "Disconnected, trying to reconnect..."
(/bin/sleep 1s && /bin/nmcli con up uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
elif IP=$(ifconfig ppp0 | awk '/inet/{print $2; exit}')
(/bin/sleep 5s)
[ "$IP" != "xxx.xxxx.xxx.xxx" ]; then
/bin/echo "wrong IP: $IP"
(/bin/sleep 1s && /bin/nmcli con down uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4 && /bin/sleep 2s && /bin/nmcli con up uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
else
/bin/echo "Already connected !"
fi
/bin/sleep 30
done
Depuis le post initial, j'ai travaillé un peu sur le script. Il fonctionne bien exécuté manuellement.
Exécuté par crone en tant qu'utilisateur, j'obtiens l'erreur suivante :
This runs as user user
Disconnected, trying to reconnect...
Error: Connection activation failed: Not authorized to control networking.
D'une manière ou d'une autre, l'utilisateur n'a pas les mêmes droits que le cron lui-même. Le problème est que, lorsqu'il est exécuté en tant que root, il échoue également. Les informations d'identification pour le vpn sont stockées dans le trousseau de clés de l'utilisateur, donc root ne peut pas établir la connexion :-/