Connetti utilizzando anyconnect dalla riga di comando


28

Sto cercando di utilizzare Cisco Anyconnect 3.1 dalla riga di comando di Linux per connettermi a un server. Posso collegarmi, ma devo inviare un parametro alla volta. Vorrei connettermi da uno script che verrà eseguito in un altro server. Posso farlo? Qualcosa di simile a

vpn connect server_add group_name user_name passwd

Per favore mostraci il comando che vuoi usare. Hai provato a usare i delimitatori?
Tog

Il comando era / opt / cisco / anyconnect / bin / vpn connect 10.1.1.1 Ma successivamente si connette e richiede nome utente, password e gruppo. Quello che voglio è passare tutto questo in una riga. Ma non riesco a trovare alcun documento su questo. Solo usando il client dell'interfaccia grafica.
Kelly Goedert,

Risposte:


27

Supponendo che /opt/cisco/anyconnect/bin/vpnagentdsia in esecuzione come dovrebbe essere automaticamente:

Per connettersi :

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

Sostituire USERNAME, PASSWORDe HOST. Alla \nyfine è accettare il banner di accesso - questo è specifico per il mio host.

Nota le virgolette singole 'anziché le doppie virgolette ": questo perché le virgolette doppie indicano a Bash di interpretare alcuni caratteri all'interno delle stringhe, come i punti esclamativi, come i comandi della cronologia di Bash. Le virgolette doppie faranno fallire questo comando con un errore "evento non trovato" se la password contiene un punto esclamativo. Le stringhe a virgoletta singola passano i punti esclamativi senza interpretarle.

Per disconnettersi :

/opt/cisco/anyconnect/bin/vpn disconnect

Questo è stato testato con AnyConnect v3.1.05160.


5
Nel caso in cui il vostro cliente non si connette causa di un errore di convalida del certificato Certificate is from an untrusted source, e si vuole ancora per collegare poi passare un yparametro nel metodo di cui sopra in modo che il comando per connettersi diventa: printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST. Nota che lo fai solo nel caso in cui ti fidi assolutamente della tua connessione; altrimenti potrebbe esserci un intermediario seduto a curiosare su di te.
shivams,

4

Ho riscontrato la stessa difficoltà nel tentativo di utilizzare Cisco AnyConnect dal terminale Mac OS X. Per ottenere il comando Cisco vpn per ottenere il suo input dall'input standard, è necessario specificare l'opzione -s, che mette il comando Cisco vpn in modalità interattiva. Quindi è possibile fornire le risposte fornite in modalità interattiva.

Le risposte che devi dare dipendono da come l'amministratore del server VPN ha configurato il server. Per me, i prompt interattivi della VPN sono

Group: 
Username: 
Password: 

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

Quindi il comando che eseguo è

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

(Le virgolette intorno a EOF servono per impedire il comando / espansione / sostituzione dei parametri nel seguente input.)

L' uscita alla fine è quella di uscire dalla modalità interattiva Cisco VPN.


2

Mi piace semplificare la riga di comando, quindi uso l'approccio sopra in uno script di shell chiamato gotowork. Come sopra, devo fornire il gruppo, il mio nome utente e una passkey composta da un PIN privato più un passcode RSA SecurID. Non devo rispondere a quanto sopra "accetta?" domanda. Tutto tranne il passcode RSA è nello script, quindi la riga di comando è

$ gotowork <RSA passcode>

Devo eseguirlo come root. Supponiamo che il PIN sia 1234. Gli elementi essenziali dello script:

# 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

Utilizzando anyconnect 3.1.05170. Testato su Debian 6, LinuxMint 17


Perché è 0\nnecessario O è specifico per la tua azienda?
Acumenus,

@ABB Sta dicendo solo uno zero 0, seguito da una nuova riga \nseguita da un nome utente, seguito da una nuova riga \necc ...
Matt Friedman

@MattFriedman, so cosa sta dicendo, ma non so perché sia ​​assolutamente necessario.
Acumenus,

1
@ABB Quando si esegue in modo interattivo e la connessione utilizza i gruppi, verranno elencati i possibili gruppi. 0quindi significa "usa il primo gruppo".
jmd_dk,

2

Questo è ciò che ha funzionato per me su OSX El Capitan. I segnaposto sono circondati da [parentesi graffe quadrate].

Abilitare

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

Disabilitare

/opt/cisco/anyconnect/bin/vpn disconnect

* So che questo è simile alla risposta di Peter S. sopra.


1
Questo ha funzionato per me in un solo comando per El Capitan,printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Rabea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.