Запущение скрипта удара на отдельном экране

Я мог использовать немного справки на этом. Я - сценарист новичка в лучшем случае Я пытаюсь записать сценарий удара для соединения с моими несколькими openvpn сайтами. Я пытаюсь записать сценарий для открытия на отдельном экране. Мне удалось записать сценарий для соединения с другим .ovpn через различные переменные. Получение их выполнить на отдельном экране - то, из-за чего я испытываю затруднения. Надеясь один из Вас парни смогли помогать мне. В настоящее время я просто работаю

screen -S vpn

затем, после того как экран открывается, я выполняю свой сценарий для соединения с openvpn сайтами. Вот мой текущий сценарий соединения 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

Что я могу сделать для создания этого сценария выполненным на отдельном экране?

3
задан 27 December 2015 в 21:47

1 ответ

Можно проверить, запускается ли скрипт внутри screen, и в противном случае повторно выполните его в 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 переменная, установленная screen, который мы можем использовать, чтобы обнаружить, если мы работаем в нем. $0 текущая команда, выполняемая, и $@ все аргументы.

Кроме того, рассмотрите упрощение Вашего сценария с помощью ассоциативных массивов:

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

И использование NOPASSWD sudoers правила вместо того, чтобы хранить Ваш пароль в открытом тексте.

1
ответ дан 1 December 2019 в 17:34

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

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