Tôi đã cố chạy tập lệnh khi khởi động nhưng không thành công.
crontab
@reboot /bin/sleep 8s && /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1
Kịch bản chạy tốt nếu tôi thực hiện nó bằng tay.
#!/bin/bash
# Nếu bắt đầu với quyền root, sau đó bắt đầu lại với tư cách người dùng "người dùng":
nếu [ "$(id -u)" -eq 0 ]; sau đó
exec sudo -H -u người dùng $0 "$@"
echo "Điều này không bao giờ đạt được.";
fi
echo "Điều này chạy với tư cách người dùng $(id -un)";
trong khi [ "đúng" ]
làm
VPNCON=$(/bin/nmcli con | /bin/grep PureVPN_PPTP | /bin/cut -f18 -d " ")
nếu [[ $VPNCON != ens3 ]]; sau đó
/bin/echo "Đã ngắt kết nối, đang cố kết nối lại..."
(/bin/sleep 1s && /bin/nmcli bật uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
elif IP=$(ifconfig ppp0 | awk '/inet/{print $2; exit}')
(/bin/ngủ 5 giây)
[ "$IP" != "xxx.xxxx.xxx.xxx" ]; sau đó
/bin/echo "IP sai: $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)
khác
/bin/echo "Đã được kết nối!"
fi
/bin/ngủ 30
xong
Kể từ bài đăng đầu tiên, tôi đã làm việc một chút với kịch bản. Nó hoạt động tốt thực hiện bằng tay.
Được thực hiện bởi crone với tư cách là người dùng, tôi gặp lỗi sau:
Điều này chạy như người dùng người dùng
Đã ngắt kết nối, đang cố kết nối lại...
Lỗi: Kích hoạt kết nối không thành công: Không được phép kiểm soát mạng.
Bằng cách nào đó, người dùng thực hiện với cron không có các quyền giống như tự nó. Vấn đề là, khi được thực thi với quyền root, nó cũng bị lỗi. Thông tin đăng nhập cho vpn được lưu trữ trong khóa người dùng, vì vậy root không thể thiết lập kết nối:-/