¿Cómo ejecutar openconnect con nombre de usuario y contraseña en una línea en la terminal?

¿Cómo ejecutar openconnect con nombre de usuario y contraseña en una línea en la terminal?

Lo uso openconnecten Ubuntu 16.04 de forma terminal, cuando quiero ejecutarlo, necesito ingresar a tres fases:

  • "sí No"
  • "nombre de usuario"
  • "contraseña"

¿Cómo puedo omitir las fases anteriores usando openconnectenuna linea(por ejemplo, usando openconnectopciones)?
¿Hay alguna opción para eso, como la siguiente línea?

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

Utilicé openconnect --helpy descubrí una manera de completar el nombre de usuario, pero no tengo idea de cómo completar la contraseña y la verificación SSL.

Respuesta1

Si escribe man openconnecten una terminal obtendrá unpágina del manual que describe el uso.

Secciones relevantes:

-u,--user=NOMBRE
Establezca el nombre de usuario de inicio de sesión en NOMBRE

--passwd-on-stdin
Leer contraseña desde la entrada estándar

Además, es posible que deba desactivar las advertencias de certificados:

--no-cert-check
No requiere que el certificado SSL del servidor sea válido. Las comprobaciones seguirán realizándose y las fallas generarán un mensaje de advertencia, pero la conexión continuará de todos modos. No debería necesitar usar esta opción: si sus servidores tienen certificados SSL que no están firmados por una autoridad certificadora confiable, aún puede agregarlos (o su CA privada) a un archivo local y usar ese archivo con la opción --cafile .

O puede agregar el certificado a un archivo.

Todo esto se puede combinar:

echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check

Respuesta2

Pude automatizar tanto la contraseña sudo, el usuario de VPN, la contraseña de VPN y el desafío secundario usando el siguiente comando (probado en 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

Respuesta3

Esto funciona para mí:

echo mypassword | openconnect --protocol=anyconnect --user=myusername --passwd-on-stdin 

Respuesta4

Mientras leo las soluciones, finalmente este es el script que me funciona:

echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert SERVERCERT

Cuando ejecuta el comando anterior sin SERVERCERT(porque no lo tienes), da unaerrorpara ti que contiene el SERVERCERT dentro, algo como: Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA= y eso es todo, la cadena que comenzó con pin-sha256:...(todo, incluye el pin-sha256 en sí) es tu SERVERCERT

¿Entonces? el resultado final en este caso por ejemplo es:

echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=

información relacionada