web-dev-qa-db-ja.com

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

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

vpn connect server_add group_name user_name passwd
35
Kelly Goedert

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

宛先接続

printf 'USERNAME\nPASSWORD\ny' | /opt/Cisco/anyconnect/bin/vpn -s connect Host

USERNAMEPASSWORD、およびHostを置き換えます。最後の\nyはログインバナーを受け入れることです-これは私のホストに固有です。

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

宛先切断

/opt/Cisco/anyconnect/bin/vpn disconnect

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

36
Acumenus

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 [〜#〜]を囲む引用符は、次の入力でのコマンド/パラメーターの展開/置換を防ぐためのものです。)

最後のexitは、Cisco VPNインタラクティブモードを終了するためのものです。

7

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

*これはピーター・Sの上記の答えに似ています。

2
adampasz

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

$ gotowork <RSA passcode>

Rootで実行する必要があります。 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でテスト済み

2
PetieRay