題 使用命令行中的anyconnect進行連接


我試圖從Linux命令行使用Cisco anyconnect 3.1連接到服務器。我可以連接,但我必須一次提交一個參數。我想從將在另一台服務器上運行的腳本連接。我能這樣做嗎?就像是

vpn connect server_add group_name user_name passwd

21
2017-09-24 11:35


起源


請告訴我們您要使用的命令。你嘗試過使用分隔符嗎? - Tog
命令是/ opt / cisco / anyconnect / bin / vpn connect 10.1.1.1但之後它連接並詢問用戶名,密碼和組。我想要的是將所有這些傳遞到一行。但我找不到任何關於此的文件。剛剛使用圖形界面客戶端。 - Kelly Goedert


答案:


假設 /opt/cisco/anyconnect/bin/vpnagentd 正在運行,因為它應該是自動的:

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

更換 USERNAMEPASSWORD,和 HOST。該 \ny 最後是接受登錄橫幅 - 這是我的主機特有的。

請注意單引號 ' 而不是雙引號 "  - 這是因為雙引號告訴Bash將字符串中的某些字符(例如感嘆號)解釋為Bash歷史命令。如果密碼包含感嘆號,則雙引號將使此命令失敗並顯示“未找到事件”錯誤。單引號字符串傳遞感嘆號而不解釋它們。

斷開

/opt/cisco/anyconnect/bin/vpn disconnect

這是使用AnyConnect v3.1.05160測試的。


20
2017-11-09 05:46



如果您的客戶端由於證書驗證錯誤而未連接 Certificate is from an untrusted source,你仍然想連接然後傳遞一個 y 上述方法中的參數使連接命令變為: printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST。請注意,僅在您完全信任您的連接的情況下執行此操作;否則可能會有一個中間人坐在你身邊窺探。 - shivams


我遇到了同樣的困難,嘗試使用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交互模式。


3
2018-03-09 02:57



+1顯式調用需要-s標誌 - lreeder


我喜歡簡化命令行,所以我在名為gotowork的shell腳本中使用上述方法。如上所述,我需要提供組,我的用戶名以及由私有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
2017-08-23 14:31



為什麼是 0\n 必要?或者它是否針對貴公司? - A-B-B
@ A-B-B那隻是說輸出為零 0,然後換行 \n 後跟用戶名,後跟換行符 \n 等等... - Matt Friedman
@MattFriedman,我知道它在說什麼,但我不知道為什麼它是必要的。 - A-B-B
@ A-B-B以交互方式運行且連接使用組時,將枚舉可能的組。 0 然後意味著“使用第一組”。 - jmd_dk


這對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
2017-11-28 20:14



這對我來說是El Capitan的一個命令, printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST - Rabea