ターミナルでユーザー名とパスワードを 1 行に入力して openconnect を実行するにはどうすればよいでしょうか?

ターミナルでユーザー名とパスワードを 1 行に入力して openconnect を実行するにはどうすればよいでしょうか?

私はopenconnectUbuntu 16.04 をターミナルで使用していますが、実行するには次の 3 つのフェーズを入力する必要があります。

  • "はい・いいえ"
  • 「ユーザー名」
  • "パスワード"

上記のフェーズをバイパスするにopenconnectはどうすればいいですか?(例:openconnectオプションを使用する)?
次の行のようなオプションはありますか?

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

ユーザー名を入力する方法は使用しopenconnect --helpて見つけましたが、パスワードと SSL 検証を入力する方法がわかりません。

答え1

man openconnectターミナルに入力すると、使用方法を説明したマニュアルページ

関連セクション:

-u,--user=NAME
ログインユーザー名をNAMEに設定する

--passwd-on-stdin
標準入力からパスワードを読み込む

さらに、証明書の警告を無効にする必要がある場合もあります。

--no-cert-check
サーバーの SSL 証明書が有効である必要はありません。チェックは引き続き行われ、失敗すると警告メッセージが表示されますが、接続は継続されます。このオプションを使用する必要はありません。サーバーに信頼できる証明機関によって署名されていない SSL 証明書がある場合は、それら (またはプライベート CA) をローカル ファイルに追加し、そのファイルを --cafile オプションで使用できます。

または、証明書をファイルに追加することもできます。

これらはすべて組み合わせることができます:

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

答え2

次のコマンドを使用して、sudo パスワード、VPN ユーザー、VPN パスワード、およびセカンダリ チャレンジの両方を自動化できました (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

答え3

これは私にとってはうまくいきます:

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

答え4

解決策を読んでいくと、最終的にこれが私にとって機能するスクリプトであることがわかりました。

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

上記のコマンドをSERVERCERT(なしで実行すると、あなたにはそれがないから)は、エラーその中に SERVERCERT が含まれている、次のようなものです: Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA= そして、pin-sha256:... で始まる文字列 (pin-sha256 自体を含む文字列全体) があなたの SERVERCERT です。

それで?この場合の最終結果は次のようになります。

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

関連情報