Запускать сценарий с помощью systemd, когда пользователь входит в систему

Я пытаюсь запустить сценарий с помощью 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

Что мне нужно сделать, чтобы моя служба со скриптом работала для любого пользователя?

Спасибо!

1
задан 14 December 2020 в 00:07

2 ответа

не знаю почему, но теперь это работает - ~/.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

Конечно, я включил и запустил службу.

0
ответ дан 10 January 2021 в 19:14

Вашему файлу модуля, вероятно, нужна зависимость от 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?

0
ответ дан 22 December 2020 в 13:29

Другие вопросы по тегам:

Похожие вопросы: