Wie führe ich Openconnect mit Benutzernamen und Passwort in einer Zeile im Terminal aus?

Wie führe ich Openconnect mit Benutzernamen und Passwort in einer Zeile im Terminal aus?

Ich verwende openconnectUbuntu 16.04 terminal. Wenn ich es ausführen möchte, muss ich drei Phasen durchlaufen:

  • "ja Nein"
  • "Nutzername"
  • "Passwort"

Wie kann ich die obigen Phasen umgehen, indem openconnecticheine Linie(z. B. mithilfe openconnectvon Optionen)?
Gibt es hierfür Optionen wie etwa die folgende Zeile?

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

Ich openconnect --helphabe einen Weg gefunden, den Benutzernamen einzugeben, aber ich habe keine Ahnung, wie ich das Passwort und die SSL-Verifizierung eingeben kann.

Antwort1

Wenn Sie man openconnectin ein Terminal tippen, erhalten Sie eineManualpage mit Beschreibung der Verwendung.

Relevante Abschnitte:

-u,--user=NAME
Setzt den Login-Benutzernamen auf NAME

--passwd-on-stdin
Passwort von der Standardeingabe lesen

Darüber hinaus müssen Sie möglicherweise Zertifikatswarnungen deaktivieren:

--no-cert-check
Erfordert kein gültiges SSL-Zertifikat des Servers. Prüfungen werden trotzdem durchgeführt und Fehler führen zu einer Warnmeldung, aber die Verbindung wird trotzdem aufrechterhalten. Sie sollten diese Option nicht verwenden müssen – wenn Ihre Server SSL-Zertifikate haben, die nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert sind, können Sie sie (oder Ihre private Zertifizierungsstelle) trotzdem zu einer lokalen Datei hinzufügen und diese Datei mit der Option --cafile verwenden.

Oder Sie fügen das Zertifikat einer Datei hinzu.

Das alles lässt sich kombinieren:

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

Antwort2

Ich konnte sowohl das Sudo-Passwort, den VPN-Benutzer, das VPN-Passwort als auch die sekundäre Herausforderung mit dem folgenden Befehl automatisieren (auf dem Mac getestet):

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

Antwort3

Das funktioniert bei mir:

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

Antwort4

Als ich mir die Lösungen durchlas, kam ich zu dem Schluss, dass dieses Skript bei mir funktioniert:

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

Wenn Sie den obigen Befehl ohne SERVERCERT( ausführenweil du es nicht hast), ergibt sich eineFehlerfür Sie, die das SERVERCERT enthält, etwa wie: Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA= und das war's, die Zeichenfolge, die mit pin-sha256 begann: ... (die gesamte Zeichenfolge, einschließlich pin-sha256 selbst) ist Ihr SERVERCERT

Und? Das Endergebnis in diesem Fall ist beispielsweise:

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

verwandte Informationen