Я должен отправить некоторые учетные данные, определенные в файле к команде соединения 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
с измененным содержанием файла, содержащим только простое имя пользователя и пароль, каждого в новой строке. То же относится здесь решение для документа.
Какие-либо идеи?
Вместо:
printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"
попытка это:
printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
Глупый я! Входной файл имеет возвраты каретки, с которыми, конечно, не может иметь дело система Linux. После удаления их команда печати я отправил теперь работы.