Em vez de:
printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"
tente isto:
printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
Eu preciso enviar algumas credenciais definidas em um arquivo para um comando de conexão vpn que está aguardando que o nome de usuário e a senha sejam inseridos quando executados. Existe um requisito semelhante à minha pergunta Insira automaticamente a entrada na linha de comando .
A solução a seguir fornecida também funciona para mim:
printf 'username\npassword\n' | /usr/sbin/openconnect -i vpn0 ...
(executado dentro de um script de shell). Mas preciso passar as credenciais contidas em um arquivo ( env_properties
) e carregadas como variáveis de ambiente. Estou carregando o conteúdo do arquivo usando o seguinte comando:
[ -f env_properties] && . env_properties
O conteúdo é exibido da seguinte forma
export VPN_USERNAME=myUsername
export VPN_PASSWORD=myPassword
No entanto, essa construção não funciona mais:
printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n" | /usr/sbin/openconnect -i vpn0 ...
Parece que a entrada não é reconhecida corretamente por qualquer motivo. E nem este comando
printf "/usr/sbin/openconnect -i vpn0 ... < env_properties
com um conteúdo de arquivo modificado contendo apenas nome de usuário e senha simples, cada um em uma nova linha. O mesmo se aplica à solução here document .
Alguma idéia?
Em vez de:
printf "${VPN_USERNAME}\n${VPN_PASSWORD}\n"
tente isto:
printf "%s\n%s\n" “$VPN_USERNAME” “$VPN_PASSWORD”
Tola eu! O arquivo de entrada possui retornos de carro que o sistema Linux obviamente não pode lidar. Depois de removê-los, o comando de impressão que postei agora funciona.