Hubungkan menggunakan anyconnect dari baris perintah

31

Saya mencoba menggunakan Cisco anyconnect 3.1 dari baris perintah Linux untuk terhubung ke server. Saya dapat terhubung, tetapi saya harus mengirimkan satu parameter sekaligus. Saya ingin terhubung dari skrip yang akan berjalan di server lain. Bisakah saya melakukan itu? Sesuatu seperti

vpn connect server_add group_name user_name passwd
Kelly Goedert
sumber
Tolong tunjukkan kepada kami perintah yang ingin Anda gunakan. Sudahkah Anda mencoba menggunakan pembatas?
Tog
Perintahnya adalah / opt / cisco / anyconnect / bin / vpn connect 10.1.1.1 Tetapi setelah itu menghubungkan dan meminta nama pengguna, kata sandi dan grup. Yang saya inginkan adalah meneruskan semua ini dalam satu baris. Tetapi saya tidak dapat menemukan dokumen tentang ini. Hanya menggunakan klien antarmuka grafis.
Kelly Goedert

Jawaban:

31

Dengan asumsi /opt/cisco/anyconnect/bin/vpnagentdberjalan seperti seharusnya secara otomatis:

Untuk menghubungkan :

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

Ganti USERNAME, PASSWORDdan HOST. Yang \nypada akhirnya adalah untuk menerima spanduk masuk - ini khusus untuk host saya.

Perhatikan tanda kutip tunggal dan 'bukan tanda kutip ganda "- ini karena tanda kutip ganda meminta Bash untuk menafsirkan karakter tertentu dalam string, seperti tanda seru, seperti yang diperintahkan Bash history. Kutipan ganda akan membuat perintah ini gagal dengan kesalahan "event not found" jika kata sandi berisi tanda seru. String yang dikutip tunggal melewati tanda seru tanpa menafsirkannya.

Untuk memutuskan sambungan :

/opt/cisco/anyconnect/bin/vpn disconnect

Ini diuji dengan AnyConnect v3.1.05160.

Acumenus
sumber
5
Dalam kasus klien Anda tidak terhubung karena kesalahan validasi sertifikat Certificate is from an untrusted source, dan Anda masih ingin menghubungkan kemudian melewati yparameter dalam metode di atas sehingga perintah untuk menghubungkan menjadi: printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST. Perhatikan bahwa lakukan ini hanya jika Anda benar-benar mempercayai koneksi Anda; kalau tidak, mungkin ada tengkulak duduk dan mengintip ke arah Anda.
shivams
1
Berfungsi dengan baik (meskipun versi saya membutuhkan a GROUPNAME\nUSERNAME\nPASSWORDy. Jika Anda ingin memisahkan kata sandi dari perintah (yang mungkin berupa skrip shell atau pengikatan kunci dotfile), Anda dapat melakukan ini:cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Sridhar Sarnobat
@SridharSarnobat Menggunakan file terpisah untuk kredensial berfungsi, tetapi ia mencetak kata sandi Anda di log seperti:>> notice: Please respond to banner. MYPASSWORD
Willian Vieira
4

Saya mengalami kesulitan yang sama mencoba menggunakan Cisco AnyConnect dari Mac OS X Terminal. Untuk mendapatkan perintah Cisco vpn untuk mengambil input dari input standar, Anda harus menentukan opsi -s, yang menempatkan perintah Cisco vpn ke mode interaktif. Kemudian Anda dapat memberikan respons yang Anda berikan dalam mode interaktif.

Respons yang perlu Anda berikan tergantung pada bagaimana administrator server VPN telah mengkonfigurasi server. Bagi saya, petunjuk interaktif vpn adalah

Group: 
Username: 
Password: 

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

Jadi perintah yang saya jalankan adalah

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

(Kutipan di sekitar EOF adalah untuk mencegah ekspansi / penggantian perintah / parameter pada input berikut.)

The keluar di akhir adalah untuk keluar dari mode interaktif Cisco VPN.

Peter Schoenrank
sumber
2

Saya suka menyederhanakan baris perintah, jadi saya menggunakan pendekatan di atas dalam skrip shell bernama gotowork. Seperti di atas, saya perlu memberikan grup, nama pengguna saya, dan kunci pas yang terdiri dari PIN pribadi plus kode sandi RSA SecurID. Saya tidak harus menjawab "terima?" pertanyaan. Semuanya kecuali kode sandi RSA ada dalam skrip, jadi baris perintahnya

$ gotowork <RSA passcode>

Saya harus menjalankannya sebagai root. Asumsikan PIN adalah 1234. Skrip penting:

# 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

Menggunakan anyconnect 3.1.05170. Diuji pada Debian 6, LinuxMint 17

PetieRay
sumber
Mengapa 0\nperlu? Atau khusus untuk perusahaan Anda?
Acumenus
@ABB Itu hanya mengatakan output nol 0, diikuti oleh baris baru \ndiikuti oleh nama pengguna, diikuti oleh baris baru \ndll ...
Matt Friedman
@ MatFriedman, saya tahu apa yang dikatakannya, tetapi saya tidak tahu mengapa itu perlu sama sekali.
Acumenus
1
@ABB Saat berjalan secara interaktif dan koneksi Anda menggunakan grup, grup yang mungkin akan disebutkan. 0kemudian berarti "gunakan grup pertama".
jmd_dk
2

Inilah yang bekerja untuk saya di OSX El Capitan. Placeholder dikelilingi oleh [kurung kurawal].

Untuk mengaktifkan

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

Untuk Nonaktifkan

/opt/cisco/anyconnect/bin/vpn disconnect

* Saya tahu ini mirip dengan jawaban Peter S. di atas.

adampasz
sumber
1
Ini bekerja untuk saya dalam satu perintah untuk El Capitan,printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Rabea