Простой перезапуск OpenVPN должен сделать это, если вы не настроили что-то, чтобы он отслеживал IP-адреса при перезапусках.
/etc/init.d/openvpn перезапуск
Если он сохраняется для последующего чтения (в bash
скрипте ), просто используйте declare -p KEY
и затем загрузите файл, чтобы прочитать его снова. Если вы хотите просто сохранить значение, используйте printf '%s\n' "$KEY"
, как если бы вы выводили любые переменные данные.
Итак,
printf '%s\n' "$KEY" >key.pem
или
printf 'BEGIN %s END\n' "$KEY" >key.pem
или что вам нужно вывести.
Ваша проблема возникает из-за того, что -n
является допустимым вариантом для echo
в bash
. Строки -e
и-E
(и их комбинации, такие как -neEne
), также вызовут проблемы в bash
по той же причине. В зависимости от того, как построен bash
, среды или параметров, символы обратной косой черты в аргументах также могут быть проблемой.
Эти и другие вопросы описаны в следующих вопросах и ответах:
Многие системы имеют команду printenv
, которая выводит содержимое заданной переменной окружения, за которой следует один символ новой строки, в стандартный вывод (printenv
, появившийся в 3BSD в конце 70-х):
printenv 'My Env Var' > file
Сохранит содержимое переменной My Env Var
, за которой следует NL, в file
во всех оболочках в этих системах.
Для переменных окружения, которые сопоставляются с переменными оболочки (, включают по крайней мере те, имя которых начинается с буквы ASCII или символа подчеркивания, за которым следует 0 или более букв ASCII, цифр или символа подчеркивания, и не являются специальными переменными, установленными в других случаях оболочка ), в Bourne -подобно оболочкам (работает и в fish
), то же самое можно сделать и с:
printf '%s\n' "$ENVVAR" > file
(хотя, если переменная не установлена, это все равно сохранит пустую строку вfile
)
Вrc
-подобно оболочкам (, где все переменные оболочки сопоставляются с переменными окружения):
printf '%s\n' $ENVVAR > file
printf '%s\n' $'My Env Var' > file
(то же предостережение, что и выше)
Вcsh
-как снаряды:
printf '%s\n' $ENVVAR:q > file
(если переменная не установлена, произойдет сбой и перезапись не произойдетfile
)
Некоторые реализации/версии ksh
не имеют встроенного printf
. В них вы также можете сделать:
print -r -- "$ENVVAR" > file