Запуск Shrewsoft из скрипта bash - PullRequest
0 голосов
/ 27 марта 2020

Сводка

Подключение к Shrew soft vpn
- терминал - команда работает нормально
- bash скрипт - та же команда возвращает ошибку:

"двойное освобождение или повреждение (выход)"

Проблема

Я часто подключаюсь к своей рабочей vpn с помощью клиента shrewsoft vpn. Я хотел бы создать скрипт bash, чтобы я мог использовать одну команду для настройки клиента vpn, а также несколько других переменных среды. Когда я запускаю команду из терминала, она работает нормально. Но та же команда в скрипте bash не выполняется.

Команда терминала

ikec -r "<shrewsoft vpn connection name>" -u "john" -p "<password>" -a

Bash Script

#! bash
ikec -r "<shrewsoft vpn connection name>" -u "john" -p "<password>" -a

и затем в терминале я запускаю команду:

> sudo bash ./vpn_connection.sh

Я уже запустил "sudo / usr / sbin / iked". С терминала я могу подключиться и отключиться, успешно выполнив эту команду, но когда я запускаю ее из сценария bash, я получаю сообщение об ошибке.

1 Ответ

1 голос
/ 28 марта 2020

При запуске сценария оболочки он теряет все переменные среды, которые вы определили, но не экспортировали. Когда вы запускаете свой скрипт под sudo, sudo очищает окружение за исключением нескольких переменных.

Возможно, ikec полагается на отсутствующую переменную окружения или, возможно, ikec, выполняемый сценарием, не тот же, возможно, из-за изменения PATH или псевдонима.

Кстати, я бы не стал использовать для этого сценарий. Я бы использовал псевдоним или функцию. В вашем ~/.profile или ~/.bash_profile (в зависимости от того, что вы используете) попробуйте:

alias vpn-connect='ikec -r "<shrewsoft vpn connection name>" \
      -u "john" -p "<password>" -a'

Тогда вы можете просто подключиться с помощью

$ vpn-connect

Однако, в комментариях о паролях говорится в файлах хорошо взяты. Ищите способ подключения к вашему vpn без предоставления пароля. Если вы не можете, вы можете просто оставить эту опцию вне псевдонима и позволить ike c запросить у вас ее.

...