Utilizo openconnect
no Ubuntu 16.04 terminalmente, quando quero executá-lo preciso entrar em três fases:
- "sim não"
- "nome de usuário"
- "senha"
Como posso ignorar as fases acima usando openconnect
emuma linha(por exemplo, usando openconnect
opções)?
Existe alguma opção para isso, como a linha a seguir?
sudo openconnect <server-name> --user=<'username'> --pass=<'password'>
Usei openconnect --help
e descobri uma forma de preencher nome de usuário, mas não tenho ideia de preenchimento de senha e verificação de SSL.
Responder1
Se você digitar man openconnect
em um terminal, receberá umpágina de manual descrevendo o uso.
Seções relevantes:
-u,--user=NAME
Defina o nome de usuário de login como NAME--passwd-on-stdin
Ler a senha da entrada padrão
Além disso, pode ser necessário desativar os avisos de certificado:
--no-cert-check
Não exige que o certificado SSL do servidor seja válido. As verificações ainda acontecerão e as falhas causarão uma mensagem de aviso, mas a conexão continuará mesmo assim. Você não deve precisar usar esta opção - se seus servidores tiverem certificados SSL que não são assinados por uma autoridade de certificação confiável, você ainda poderá adicioná-los (ou sua CA privada) a um arquivo local e usar esse arquivo com a opção --cafile .
Ou você pode adicionar o certificado a um arquivo.
Tudo isso pode ser combinado:
echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check
Responder2
Consegui automatizar a senha sudo, o usuário VPN, a senha VPN e o desafio secundário usando o seguinte comando (testado no Mac):
challange=<code> && sudo -S <<< "<sudo_password>" echo I am super user && { printf '<vpn_password>\n'; sleep 1; printf "$challange\n"; } | sudo openconnect <server_name> --user <vpn_username> --passwd-on-stdin
Responder3
Isso funciona para mim:
echo mypassword | openconnect --protocol=anyconnect --user=myusername --passwd-on-stdin
Responder4
Ao ler as soluções, finalmente este é o script que está funcionando para mim:
echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert SERVERCERT
Quando você executa o comando acima sem SERVERCERT(porque você não tem), dá umaerropara você que contém o SERVERCERT dentro dele, algo como:
Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=
e pronto, a string iniciada com pin-sha256:...(toda ela, inclui o próprio pin-sha256) é o seu SERVERCERT
Então? o resultado final neste caso, por exemplo, é:
echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=