Автоматически отправлять ввод файла в команду с использованием расширенных переменных

Мне нужно отправить некоторые учетные данные, определенные в файле, в команду подключения vpn, которая ожидает ввода имени пользователя и пароля при его выполнении. В моем вопросе есть аналогичное требование. Автоматически вводите ввод в командной строке.

Приведенное ниже решение работает и для меня:

printf 'username\npassword\n' | /usr/sbin/openconnect -i vpn0 ...

(выполняется внутри скрипта оболочки). Но мне нужно передать учетные данные, содержащиеся в файле (env_properties) и загрузить как переменные среды. Я загружаю содержимое файла, используя следующую команду:

[ -f env_properties] && . env_properties

Содержимое выглядит следующим образом

export VPN_USERNAME=myUsername export VPN_PASSWORD=myPassword

Однако такая конструкция больше не работает:

printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n" | /usr/sbin/openconnect -i vpn0 ...

Кажется, что вход не распознан правильно по какой-либо причине. И ни эта команда

printf "/usr/sbin/openconnect -i vpn0 ... < env_properties

с измененным содержимым файла, содержащим только одно имя пользователя и пароль, каждая в новой строке. То же самое относится к решению данного документа.

Любые идеи?

1
задан 18 June 2017 в 20:02

6 ответов

Вместо:

printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"

попробуйте следующее:

printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
1
ответ дан 22 May 2018 в 21:24
  • 1
    thx для вашего ответа, но это тоже не сработало. Похоже, что переменное расширение каким-то образом искажает входные строки или так – user35934 18 June 2017 в 20:46

Вместо:

printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"

попробуйте следующее:

printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
1
ответ дан 18 July 2018 в 11:27

Вместо:

printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"

попробуйте следующее:

printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
1
ответ дан 24 July 2018 в 19:48

Глупо меня! Входной файл имеет возврат каретки, с которым система Linux, конечно, не справляется. После удаления их команда печати, которую я опубликовал, теперь работает.

0
ответ дан 22 May 2018 в 21:24

Глупо меня! Входной файл имеет возврат каретки, с которым система Linux, конечно, не справляется. После удаления их команда печати, которую я опубликовал, теперь работает.

0
ответ дан 18 July 2018 в 11:27

Глупо меня! Входной файл имеет возврат каретки, с которым система Linux, конечно, не справляется. После удаления их команда печати, которую я опубликовал, теперь работает.

0
ответ дан 24 July 2018 в 19:48

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

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