Avvio automatico script .sh al login di un specifico utente

13 risposte [Ultimo contenuto]
Ritratto di errezeta
errezeta
(Junior)
Offline
Junior
Iscritto: 05/04/2018
Messaggi: 15

può essere che tu cerchi di eseguilo utilizzando sh e non bash?
se lo eseguo:
/home/mioutente/Script/script.sh
oppure

cd /home/mioutente/Script
./script.sh

vedrai che funziona. Riguardo al .bash_login era un errore di battitura.

ora provo comunque a modificarlo e vi aggiorno.

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 2046

Rifaccio perchè sono andato un bel pò in confusione su quello che è poi il tuo obbiettivo finale.

Allora .profile non va bene perchè usato quando fai login da shell, ma ovviamente il login lo fai da GDM o LightDM.
.bashrc andrebbe bene ma viene eseguito ogni volta che apri un terminale, e non è quello che vuoi.

Ho provato creando questo file script.desktop nella cartella ~/.config/autostart

[Desktop Entry]
Type=Application
Name=Script
Exec=$HOME/tmp/script.sh 2> $HOME/tmp/script.log
Terminale=false

e dovrebbe essere la soluzione più corretta .... credo.

Ritratto di errezeta
errezeta
(Junior)
Offline
Junior
Iscritto: 05/04/2018
Messaggi: 15

Ho risolto.
il problema era legato alla mancanza di accesso a un file contenente la password della VPN.
Dopo aver inserito il tuo script in .profile e provando ad eseguire il login ho trovato in messages questa riga.

Apr  9 19:07:52 MIOPC /usr/lib/gdm3/gdm-x-session[3698]: Attenzione: password per "vpn.secrets.password" non fornita in "passwd-file" e nmcli non può richiederla senza l'opzione "--ask".

allora ho fatto una breve ricerca e ho modificato lo script come segue:

#!/bin/bash
 
NETWORK=( $(curl icanhazip.com) )
 
if [ "$NETWORK" == "X.X.X.X" ]
then
	nmcli connection up id nome_vpn passwd-file /home/mioutente/.vpn
fi

il file .vpn contiene la password:

cat .vpn 
vpn.secrets.password:mia_password

A questo punto però ho gestito l'avvio tramite systemd in modo da assicurarmi che la connessione parta sempre dopo la rete e solo in modalità grafica.

ho creato il file vpn.service in /lib/systemd/system/

[Unit]
Description=OpenVPN Service
After=network.target
 
[Service]
Type=oneshot
ExecStart=/home/mioutente/Script/script.sh
RemainAfterExit=yes
 
[Install]
WantedBy=graphical.target

a questo punto ho abilitato il servizio eseguendo: sudo systemctl enable vpn.service

Dopo il riavvio del PC la VPN viene collegata automaticamente senza errori e solo quando viene rilevato l'ip pubblico dell'ufficio.

Grazie mille del supporto!!! Applause