web-dev-qa-db-fra.com

Se connecter en utilisant anyconnect à partir de la ligne de commande

J'essaie d'utiliser Cisco anyconnect 3.1 à partir de la ligne de commande Linux pour me connecter à un serveur. Je peux me connecter, mais je dois soumettre un paramètre à la fois. J'aimerais me connecter à partir d'un script qui s'exécutera sur un autre serveur. Puis-je faire cela? Quelque chose comme

vpn connect server_add group_name user_name passwd
26
Kelly Goedert

En supposant que /opt/Cisco/anyconnect/bin/vpnagentd fonctionne comme il devrait normalement l'être:

Pour connecter :

printf 'USERNAME\nPASSWORD\ny' | /opt/Cisco/anyconnect/bin/vpn -s connect Host

Remplacez USERNAME, PASSWORD et Host. Le \ny à la fin est destiné à accepter la bannière de connexion - ceci est spécifique à mon hôte.

Notez les guillemets simples ' au lieu de guillemets doubles " - car les guillemets doubles indiquent à Bash d'interpréter certains caractères au sein de chaînes, telles que les points d'exclamation, en tant que commandes de l'historique Bash. Les guillemets doubles feront que cette commande échouera avec une erreur "événement introuvable" si le mot de passe contient un point d'exclamation. Les chaînes entre guillemets simples passent des points d'exclamation sans les interpréter.

Pour déconnecter :

/opt/Cisco/anyconnect/bin/vpn disconnect

Ceci a été testé avec AnyConnect v3.1.05160.

25
A-B-B

J'ai rencontré le même problème que d'essayer d'utiliser Cisco AnyConnect à partir de Mac OS X Terminal. Pour que la commande Cisco vpn tire son entrée d'une entrée standard, vous devez spécifier l'option -s, qui met la commande Cisco vpn en mode interactif. Ensuite, vous pouvez fournir les réponses que vous donnez en mode interactif.

Les réponses que vous devez donner dépendent de la manière dont l'administrateur du serveur VPN a configuré le serveur. Pour moi, les invites interactives VPN sont

Group: 
Username: 
Password: 

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

Donc, la commande que je lance est

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

(Les guillemets autour de EOF servent à empêcher l'expansion/la substitution de commandes/paramètres dans l'entrée suivante.)

La sortie à la fin consiste à quitter le mode interactif vpn de Cisco.

4
Peter Schoenrank

C'est ce qui a fonctionné pour moi sur OSX El Capitan. Les espaces réservés sont entourés de [accolades carrées].

Activer

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

Pour désactiver

/opt/Cisco/anyconnect/bin/vpn disconnect

* Je sais que cela ressemble à la réponse de Peter S. ci-dessus.

2
adampasz

J'aime simplifier la ligne de commande et j'utilise donc l'approche ci-dessus dans un script Shell appelé gotowork. Comme ci-dessus, je dois fournir le groupe, mon nom d'utilisateur et une clé de sécurité composée d'un code privé PIN et d'un code secret RSA SecurID. Je n'ai pas à répondre à la question ci-dessus "accepter?" question. Tout sauf le code RSA est dans le script, la ligne de commande est donc

$ gotowork <RSA passcode>

Je dois l'exécuter en tant que root. Supposons que PIN vaut 1234. L'essentiel du 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

Utiliser anyconnect 3.1.05170. Testé sur Debian 6, LinuxMint 17

2
PetieRay