Je pourrais utiliser un peu d'aide sur celui-ci. Je suis au mieux un scripteur novice. J'essaye d'écrire un script bash pour me connecter à mes multiples sites openvpn. J'essaie d'écrire le script pour l'ouvrir dans un écran détaché. J'ai réussi à écrire le script pour se connecter aux différents .ovpn via différentes variables. Les faire courir dans l'écran détaché est ce qui me pose problème. En espérant que l'un de vous puisse m'aider. Actuellement, je cours
screen -S vpn
puis une fois l’écran ouvert, j’exécute mon script pour me connecter aux sites openvpn. Ici est mon script de connexion vpn actuel:
#!/bin/bash
if [ "$1" = "seed-rl" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config seed-rl.ovpn
fi
if [ "$1" = "atl10" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config Atlanta-10.ovpn
fi
if [ "$1" = "atl11" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config Atlanta-11.ovpn
fi
if [ "$1" = "atl12" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config Atlanta-12.ovpn
fi
if [ "$1" = "nyc02" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config NewYork-02.ovpn
fi
if [ "$1" = "nyc10" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config NewYork-10.ovpn
fi
if [ "$1" = "nyc11" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config NewYork-11.ovpn
fi
Que puis-je faire pour que ce script s'exécute sur un écran détaché?
Vous pouvez vérifier si le script est en cours d'exécution dans screen
et sinon, l'exécuter à nouveau dans screen
:
#! /bin/bash
[[ -z $STY ]] && screen -S vpn -d -m "$0" "$@"
if [ "$1" = "seed-rl" ] ;
then
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config seed-rl.ovpn
fi
...
STY
EST UNE VARIABLE DÉFINIE PAR screen
, que nous pouvons utiliser pour détecter si nous y travaillons. $0
est la commande en cours d'exécution et $@
tous les arguments.
En outre, envisagez de simplifier votre script à l'aide de tableaux associatifs:
#! /bin/bash
[[ -z $STY ]] && screen -S vpn -d -m "$0" "$@"
declare -A configs
config['seed-rl']='seed-rl.ovpn'
config['atl10']='Atlanta-10.ovpn'
# ... etc.
config['nyc11']='NewYork-11.ovpn'
cd "/home/robbiel811/vpn configs"
echo password | Sudo -S openvpn --config "${config[$1]}.ovpn"
Et en utilisant les règles NOPASSWD
sudoers
au lieu de stocker votre mot de passe en texte clair.