Como executar o openconnect com nome de usuário e senha em uma linha do terminal?

Como executar o openconnect com nome de usuário e senha em uma linha do terminal?

Utilizo openconnectno 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 openconnectemuma linha(por exemplo, usando openconnectopções)?
Existe alguma opção para isso, como a linha a seguir?

sudo openconnect <server-name> --user=<'username'> --pass=<'password'>

Usei openconnect --helpe 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 openconnectem 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=

informação relacionada