LinuxコマンドラインからCisco anyconnect 3.1を使用してサーバーに接続しようとしています。接続できますが、一度に1つのパラメーターを送信する必要があります。別のサーバーで実行されるスクリプトから接続したいと思います。それをしてもいいですか?何かのようなもの
vpn connect server_add group_name user_name passwd
LinuxコマンドラインからCisco anyconnect 3.1を使用してサーバーに接続しようとしています。接続できますが、一度に1つのパラメーターを送信する必要があります。別のサーバーで実行されるスクリプトから接続したいと思います。それをしてもいいですか?何かのようなもの
vpn connect server_add group_name user_name passwd
回答:
次の/opt/cisco/anyconnect/bin/vpnagentd
ように自動的に実行されると仮定します。
接続:
printf 'USERNAME\nPASSWORD\ny' | /opt/cisco/anyconnect/bin/vpn -s connect HOST
交換するUSERNAME
、PASSWORD
とHOST
。\ny
最後には、ログインバナーを受け入れることである-これが私のホストに固有のものです。
'
二重引用符の代わりに単一引用符に注意してください"
-これは、二重引用符が感嘆符などの文字列内の特定の文字をBash履歴コマンドとして解釈するようにBashに指示するためです。パスワードに感嘆符が含まれている場合、二重引用符を使用すると、このコマンドが「イベントが見つかりません」というエラーで失敗します。単一引用符で囲まれた文字列は、感嘆符を解釈せずに渡します。
切断:
/opt/cisco/anyconnect/bin/vpn disconnect
これはAnyConnect v3.1.05160でテストされました。
Certificate is from an untrusted source
、まだ接続したい場合は、接続y
するコマンドが次のようになるように上記のメソッドでパラメーターを渡しますprintf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
。接続を完全に信頼する場合にのみ、これを行うことに注意してください。そうでなければ、仲介者が座ってあなたを覗き見するかもしれません。
GROUPNAME\nUSERNAME\nPASSWORDy
あなたは)シェルスクリプトやドットファイルのキーバインディングとすることができる(コマンドとは別のパスワードを維持したい場合は、あなたがこれを行うことができます。cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
>> notice: Please respond to banner. MYPASSWORD
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インタラクティブモードを終了することです。
コマンドラインを単純化するのが好きなので、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
必要なのですか?それともあなたの会社に固有のものですか?
0
し、改行\n
、ユーザー名、改行\n
などが続くことを言っているだけです。
0
「最初のグループを使用する」という意味です。
これが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.の回答に似ています。
printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST