it-swarm.com.de

Stellen Sie mit anyconnect von der Befehlszeile aus eine Verbindung her

Ich versuche, Cisco anyconnect 3.1 über die Linux-Befehlszeile zu verwenden, um eine Verbindung zu einem Server herzustellen. Ich kann eine Verbindung herstellen, muss jedoch jeweils einen Parameter übermitteln. Ich möchte eine Verbindung über ein Skript herstellen, das auf einem anderen Server ausgeführt wird. Kann ich das machen? So etwas wie

vpn connect server_add group_name user_name passwd
26
Kelly Goedert

Angenommen, /opt/Cisco/anyconnect/bin/vpnagentd wird so ausgeführt, wie es automatisch sein sollte:

Um eine Verbindung herzustellen :

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

Ersetzen Sie USERNAME, PASSWORD und Host. Der \ny am Ende ist das Akzeptieren des Login-Banners - dies ist spezifisch für meinen Host.

Beachten Sie die einfachen Anführungszeichen ' anstelle der doppelten Anführungszeichen ". Dies liegt daran, dass Bash durch doppelte Anführungszeichen angewiesen wird, bestimmte Zeichen in Zeichenfolgen, z. B. Ausrufezeichen, als Bash-Verlaufsbefehle zu interpretieren. Doppelte Anführungszeichen führen dazu, dass dieser Befehl mit dem Fehler "Ereignis nicht gefunden" fehlschlägt, wenn das Kennwort ein Ausrufezeichen enthält. Zeichenfolgen in Anführungszeichen geben Ausrufezeichen weiter, ohne sie zu interpretieren.

Um die Verbindung zu trennen :

/opt/Cisco/anyconnect/bin/vpn disconnect

Dies wurde mit AnyConnect v3.1.05160 getestet.

25
A-B-B

Beim Versuch, Cisco AnyConnect vom Mac OS X Terminal aus zu verwenden, trat dieselbe Schwierigkeit auf. Damit der Cisco vpn-Befehl seine Eingabe von der Standardeingabe übernimmt, müssen Sie die Option -s angeben, mit der der Cisco vpn-Befehl in den interaktiven Modus versetzt wird. Anschließend können Sie die Antworten, die Sie geben, im interaktiven Modus bereitstellen.

Welche Antworten Sie geben müssen, hängt davon ab, wie der VPN-Serveradministrator den Server konfiguriert hat. Für mich sind die interaktiven vpn-Eingabeaufforderungen

Group: 
Username: 
Password: 

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

Der Befehl, den ich ausführe, lautet also

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

(Die Anführungszeichen um EOF sollen die Erweiterung/Ersetzung von Befehlen/Parametern in der folgenden Eingabe verhindern.)

Das Ende dient zum Verlassen des interaktiven Cisco VPN-Modus.

4

Das hat bei mir unter OSX El Capitan funktioniert. Platzhalter sind von [eckigen Klammern] umgeben.

Aktivieren

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

Deaktivieren

/opt/Cisco/anyconnect/bin/vpn disconnect

* Ich weiß, dass dies der obigen Antwort von Peter S. ähnelt.

2
adampasz

Ich mag es, die Befehlszeile zu vereinfachen, deshalb benutze ich den obigen Ansatz in einem Shell-Skript namens gotowork. Wie oben muss ich die Gruppe, meinen Benutzernamen und einen Kennschlüssel angeben, der aus einem privaten PIN und einem RSA SecurID-Kenncode besteht. Ich muss das oben stehende "Akzeptieren?" Nicht beantworten. Frage. Alles außer dem RSA-Passcode befindet sich im Skript, die Befehlszeile also

$ gotowork <RSA passcode>

Ich muss es als root ausführen. Angenommen, das PIN ist 1234. Das Script Essentials:

# 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

Verwenden von anyconnect 3.1.05170. Getestet unter Debian 6, LinuxMint 17

2
PetieRay