Executando o script bash na tela separada

3

Eu poderia usar um pouco de ajuda para isso. Eu sou um scripter novato na melhor das hipóteses. Eu estou tentando escrever um script bash para se conectar aos meus vários sites openvpn. Eu estou tentando escrever o script para abrir em uma tela desanexada. Eu consegui escrever o script para se conectar ao diferente .ovpn através de diferentes variáveis. Obtê-los para executar na tela desanexada é o que eu estou tendo problemas com. Esperando que um de vocês possa me ajudar. Atualmente estou apenas executando

screen -S vpn

quando a tela abrir, executo meu script para me conectar aos sites openvpn. Aqui é o meu script de conexão atual da vpn:

#!/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

O que posso fazer para que esse script seja executado em uma tela desanexada?

    
por RobbieL811 27.12.2015 / 18:26

1 resposta

2

Você pode verificar se o script está sendo executado dentro de screen e, caso contrário, execute-o novamente em 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 é uma variável definida por screen , que podemos usar para detectar se estamos em execução nisso. $0 é o comando atual sendo executado e $@ todos os argumentos.

Além disso, considere simplificar seu script usando matrizes associativas:

#! /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"

E usando as regras NOPASSWD sudoers em vez de armazenar sua senha em texto não criptografado.

    
por muru 27.12.2015 / 20:08