Я мог использовать немного справки на этом. Я - сценарист новичка в лучшем случае Я пытаюсь записать сценарий удара для соединения с моими несколькими 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
Что я могу сделать для создания этого сценария выполненным на отдельном экране?
Можно проверить, запускается ли скрипт внутри 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
правила вместо того, чтобы хранить Ваш пароль в открытом тексте.