Kết nối bằng anyconnect từ dòng lệnh


31

Tôi đang cố gắng sử dụng Cisco anyconnect 3.1 từ dòng lệnh Linux để kết nối với máy chủ. Tôi có thể kết nối, nhưng tôi phải gửi một tham số tại một thời điểm. Tôi muốn kết nối từ một tập lệnh sẽ chạy trong một máy chủ khác. Tôi có thể làm điều đó? Cái gì đó như

vpn connect server_add group_name user_name passwd

Vui lòng cho chúng tôi thấy lệnh bạn muốn sử dụng. Bạn đã thử sử dụng dấu phân cách?
Tog

Lệnh là / opt / cisco / anyconnect / bin / vpn kết nối 10.1.1.1 Nhưng sau đó, nó kết nối và yêu cầu tên người dùng, mật khẩu và nhóm. Những gì tôi muốn là vượt qua tất cả điều này trong một dòng. Nhưng tôi không thể tìm thấy bất kỳ tài liệu về điều này. Chỉ cần sử dụng máy khách giao diện đồ họa.
Kelly Goedert

Câu trả lời:


31

Giả sử /opt/cisco/anyconnect/bin/vpnagentdđang chạy vì nó sẽ tự động:

Để kết nối :

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

Thay thế USERNAME, PASSWORDHOST. Các \nycuối cùng là chấp nhận các biểu ngữ đăng nhập - đây là đặc trưng cho máy chủ của tôi.

Lưu ý các dấu ngoặc đơn 'thay vì dấu ngoặc kép "- điều này là do dấu ngoặc kép bảo Bash diễn giải các ký tự nhất định trong chuỗi, chẳng hạn như dấu chấm than, như các lệnh lịch sử Bash. Dấu ngoặc kép sẽ khiến lệnh này không thành công với lỗi "không tìm thấy sự kiện" nếu mật khẩu chứa dấu chấm than. Các chuỗi trích dẫn đơn vượt qua dấu chấm than cùng mà không diễn giải chúng.

Để ngắt kết nối :

/opt/cisco/anyconnect/bin/vpn disconnect

Điều này đã được thử nghiệm với AnyConnect v3.1.05160.


5
Trong trường hợp máy khách của bạn không kết nối do lỗi xác thực chứng chỉ Certificate is from an untrusted sourcevà bạn vẫn muốn kết nối thì truyền ytham số trong phương thức trên để lệnh kết nối trở thành : printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST. Lưu ý rằng chỉ làm điều này trong trường hợp bạn hoàn toàn tin tưởng vào kết nối của bạn; nếu không, có thể có một người trung gian ngồi và rình mò bạn.
shivams

1
Hoạt động rất đẹp (mặc dù phiên bản của tôi cần a GROUPNAME\nUSERNAME\nPASSWORDy. Nếu bạn muốn tách mật khẩu của mình khỏi lệnh (có thể là tập lệnh shell hoặc ràng buộc khóa dotfile), bạn có thể làm điều này:cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Sridhar Sarnobat

@SridharSarnobat Sử dụng một tệp riêng cho thông tin đăng nhập hoạt động, nhưng nó in ra mật khẩu của bạn trong nhật ký như:>> notice: Please respond to banner. MYPASSWORD
Willian Vieira

4

Tôi gặp khó khăn tương tự khi thử sử dụng Cisco AnyConnect từ Mac OS X Terminal. Để có được lệnh Cisco vpn lấy đầu vào từ đầu vào tiêu chuẩn, bạn phải chỉ định tùy chọn -s, đưa lệnh Cisco vpn vào chế độ tương tác. Sau đó, bạn có thể cung cấp các phản hồi mà bạn đưa ra trong chế độ tương tác.

Các phản hồi mà bạn cần đưa ra tùy thuộc vào cách quản trị viên máy chủ VPN đã định cấu hình máy chủ. Đối với tôi, lời nhắc tương tác vpn là

Group: 
Username: 
Password: 

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

Vì vậy, lệnh mà tôi chạy là

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

(Các trích dẫn xung quanh EOF là để ngăn chặn việc mở rộng / thay thế tham số / lệnh trong đầu vào sau.)

Các lối ra ở cuối là để thoát khỏi chế độ tương tác VPN Cisco.


2

Tôi muốn đơn giản hóa dòng lệnh, vì vậy tôi sử dụng cách tiếp cận ở trên trong một tập lệnh shell có tên gotowork. Như trên, tôi cần cung cấp cho nhóm, tên người dùng của mình và mật mã bao gồm mã PIN riêng cộng với mật mã RSA SecurID. Tôi không phải trả lời "chấp nhận?" câu hỏi Tất cả mọi thứ trừ mật mã RSA đều có trong tập lệnh, vì vậy dòng lệnh là

$ gotowork <RSA passcode>

Tôi phải chạy nó như root. Giả sử mã PIN là 1234. Các yếu tố cần thiết của tập lệnh:

# 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

Sử dụng anyconnect 3.1.05170. Đã thử nghiệm trên Debian 6, LinuxMint 17


Tại sao 0\ncần thiết? Hoặc nó là cụ thể cho công ty của bạn?
Acumenus

@ABB Điều đó chỉ nói đầu ra bằng 0 0, theo sau là một dòng mới \ntheo sau là tên người dùng, theo sau là một dòng mới, \nv.v ...
Matt Friedman

@MattFriedman, tôi biết những gì nó nói, nhưng tôi không biết tại sao nó lại cần thiết.
Acumenus

1
@ABB Khi chạy tương tác và kết nối của bạn sử dụng các nhóm, các nhóm có thể sẽ được liệt kê. 0sau đó có nghĩa là "sử dụng nhóm đầu tiên".
jmd_dk

2

Đây là những gì làm việc cho tôi trên OSX El Capitan. Giữ chỗ được bao quanh bởi [dấu ngoặc vuông].

Để kích hoạt

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

Vô hiệu hóa

/opt/cisco/anyconnect/bin/vpn disconnect

* Tôi biết điều này tương tự như câu trả lời của Peter S. ở trên.


1
Điều này làm việc cho tôi trong một lệnh cho El Capitan,printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Rabea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.