Я пытаюсь запустить сценарий с помощью systemd, когда пользователь входит в систему. Тем не менее, до сих пор он не работает так, как я бы хотел . Что я сделал:
Я поместил следующую службу в /etc/systemd/system/loginNordVPN.service
[Unit]
After=network.service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/autologinNordVPN
[Install]
WantedBy=default.target
Сценарий / usr / local / bin / autologinNordVPN
имеет следующее содержимое:
#!/usr/bin/expect
# Script for automatic login at nordvpn
set timeout 10
set username "myusername\r"
set credentialpass "mypassword\r"
spawn nordvpn login
expect "Email / Username: "
send "$username"
expect "Password: "
send "$credentialpass"
interact
Скрипт / usr / local / bin / autologinNordVPN
работает, если я запускаю его с ./ autologinNordVPN
(независимо от того, запускаю ли я его под обычным пользователем или как пользователь с sudoers правильно).
После загрузки машины и входа в систему как пользователя с правами sudoers я могу подключиться к NordVPN - служба, указанная выше, выполнила сценарий. Хорошо, пока здесь.
Если я вхожу в систему как «обычный» пользователь без права sudoer, я не могу подключиться к NordVPN - значит, что-то пошло не так. Поэтому я попытался добавить указанный выше сервис к пользователям systemd. Я скопировал службу loginNordVPN.service в ~ / .local / share / systemd / user /
и запустил службу с помощью systemctl --user enable loginNordVPN.service
. (Я также удалил эту службу из общесистемной systemd.)
После перезагрузки и входа в систему кажется, что сценарий не был выполнен полностью.
Если я загляну в журнал с помощью journalctl --user | grep "nordv"
Я вижу, эта служба была запущена, но по какой-либо причине она не работает:
journalctl --user | grep "nordv"
Dez 13 15:04:03 MYSYSTEM systemd[3497]: Started Login current user to nordvpn.
Dez 13 15:04:03 MYSYSTEM autologinNordVPN[3503]: spawn nordvpn login
Я попытался изменить пользовательскую службу таким способом, который не работает:
[Unit]
Description=Login current user to nordvpn
[Service]
StandardOutput=journal
ExecStart=/usr/local/bin/autologinNordVPN
[Install]
WantedBy=default.target
И это попробуйте другие работы:
[Unit]
Description=Login current user to nordvpn
[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/usr/local/bin/autologinNordVPN
[Install]
WantedBy=default.target
Что мне нужно сделать, чтобы моя служба со скриптом работала для любого пользователя?
Спасибо!
не знаю почему, но теперь это работает - ~/.local/share/systemd/user/loginNordVPN.service
:
[Unit]
Description=Login current user to nordvpn
After=network.service
After=network-online.target
#Requires=nordvpnd.service
[Service]
#StandardOutput=journal
ExecStart=/usr/local/bin/autologinNordVPN
#TimeoutSec=10
[Install]
WantedBy=default.target
Конечно, я включил и запустил службу.
Вашему файлу модуля, вероятно, нужна зависимость от nordvpnd
, демона, который фактически подключается к сети NordVPN и настраивает интерфейс VPN.
Это должна делать строка, такая как Requires=nordvpn.service
в разделе [Unit]
вашего файла модуля.
Что произойдет, если определить /etc/systemd/system/loginNordVPN.service
как:
[Unit]
Description=NordVPN Auto Login
After=network.service
After=network-online.target
Requires=nordvpn.service
[Service]
ExecStart=/usr/local/bin/autologinNordVPN
[Install]
WantedBy=default.target
И systemctl включить nordvpnd
?