コマンドラインからanyconnectを使用して接続する


31

LinuxコマンドラインからCisco anyconnect 3.1を使用してサーバーに接続しようとしています。接続できますが、一度に1つのパラメーターを送信する必要があります。別のサーバーで実行されるスクリプトから接続したいと思います。それをしてもいいですか?何かのようなもの

vpn connect server_add group_name user_name passwd

使用したいコマンドを教えてください。区切り文字を使用してみましたか?
Tog

コマンドは/ opt / cisco / anyconnect / bin / vpn connect 10.1.1.1でしたが、その後、接続してユーザー名、パスワード、およびグループを要求します。私が望むのは、これらすべてを1行で渡すことです。しかし、これに関するドキュメントは見つかりません。グラフィカルインターフェイスクライアントを使用するだけです。
ケリーゲーダート

回答:


31

次の/opt/cisco/anyconnect/bin/vpnagentdように自動的に実行されると仮定します。

接続

printf 'USERNAME\nPASSWORD\ny' | /opt/cisco/anyconnect/bin/vpn -s connect HOST

交換するUSERNAMEPASSWORDHOST\ny最後には、ログインバナーを受け入れることである-これが私のホストに固有のものです。

'二重引用符の代わりに単一引用符に注意してください"-これは、二重引用符が感嘆符などの文字列内の特定の文字をBash履歴コマンドとして解釈するようにBashに指示するためです。パスワードに感嘆符が含まれている場合、二重引用符を使用すると、このコマンドが「イベントが見つかりません」というエラーで失敗します。単一引用符で囲まれた文字列は、感嘆符を解釈せずに渡します。

切断

/opt/cisco/anyconnect/bin/vpn disconnect

これはAnyConnect v3.1.05160でテストされました。


5
証明書検証エラーのためにクライアントが接続せずCertificate is from an untrusted source、まだ接続したい場合は、接続yするコマンドが次のようになるように上記のメソッドでパラメーターを渡しますprintf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST。接続を完全に信頼する場合にのみ、これを行うことに注意してください。そうでなければ、仲介者が座ってあなたを覗き見するかもしれません。
シヴァム

1
私のバージョンが必要のに(美しくワークスGROUPNAME\nUSERNAME\nPASSWORDyあなたは)シェルスクリプトやドットファイルのキーバインディングとすることができる(コマンドとは別のパスワードを維持したい場合は、あなたがこれを行うことができます。cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
シュリダールSarnobat

資格証明書の作品のための別のファイルを使用して@SridharSarnobatが、それは次のようにログにパスワードを出力します:>> notice: Please respond to banner. MYPASSWORD
Willianのビエラ

4

Mac OS XターミナルからCisco AnyConnectを使用するのと同じ困難に遭遇しました。Cisco vpnコマンドを取得して標準入力から入力を取得するには、-sオプションを指定する必要があります。これにより、Cisco vpnコマンドが対話モードになります。その後、対話モードで提供する応答を提供できます。

提供する必要がある応答は、VPNサーバー管理者がサーバーを構成した方法によって異なります。私にとって、vpnインタラクティブプロンプトは

Group: 
Username: 
Password: 

Blah, blah, blah, ...
accept? :

だから私が実行するコマンドは

$ /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.com <<"EOF"
0
username
password
y
exit
EOF

EOFを囲む引用符は、次の入力でコマンド/パラメーターの展開/置換を防ぐためのものです。)

終了終了時には、Cisco VPNインタラクティブモードを終了することです。


2

コマンドラインを単純化するのが好きなので、gotoworkという名前のシェルスクリプトで上記のアプローチを使用します。上記のように、グループ、ユーザー名、およびプライベートPINとRSA SecurIDパスコードで構成されるパスキーを提供する必要があります。上記の「同意する」に答える必要はありません。質問。RSAパスコード以外はすべてスクリプト内にあるため、コマンドラインは

$ gotowork <RSA passcode>

ルートとして実行する必要があります。PINが1234であると想定します。スクリプトの要点:

# put the interactive answers into a text file
echo -e "0\nusername\n1234$1\n" > /tmp/answers.txt
# find the path to the anyconnect executables
ciscopath="$(dirname $(find /opt/cisco -depth -name vpnagentd))"
# make sure the anyconnect daemon is running
[ $(pidof vpnagentd) ] || $ciscopath/vpnagentd
# connect
$ciscopath/vpn -s < /tmp/answers.txt connect remote.mycompany.com

anyconnect 3.1.05170を使用します。Debian 6、LinuxMint 17でテスト済み


なぜ0\n必要なのですか?それともあなたの会社に固有のものですか?
Acumenus 14年

@ABBそれはただ、ゼロを出力0し、改行\n、ユーザー名、改行\nなどが続くことを言っているだけです。
Matt Friedman

@MattFriedman、私はそれが何を言っているのか知っていますが、なぜそれが必要なのか全くわかりません。
アキュメナス

1
@ABBインタラクティブに実行し、接続がグループを使用する場合、可能なグループが列挙されます。0「最初のグループを使用する」という意味です。
jmd_dk

2

これがOSX El Capitanで私のために働いたものです。プレースホルダーは[角カッコ]で囲まれています。

有効にする

/opt/cisco/anyconnect/bin/vpn -s connect [HOST_ADDRESS] <<"EOF"
[VPN_USERNAME]
[VPN_PASSWORD] 
y
EOF

無効にする

/opt/cisco/anyconnect/bin/vpn disconnect

*これは上記のPeter S.の回答に似ています。


1
これは、エルキャピタンの1つのコマンドで機能しましたprintf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
ラベア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.