23

Я пытаюсь использовать Cisco anyconnect 3.1 из командной строки Linux для подключения к серверу. Я могу подключиться, но мне нужно отправить по одному параметру за раз. Я хотел бы подключиться из сценария, который будет работать на другом сервере. Могу ли я сделать это? Что-то вроде

vpn connect server_add group_name user_name passwd

4 ответа4

22

Предполагая, что /opt/cisco/anyconnect/bin/vpnagentd работает так, как должно автоматически:

Для подключения:

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

Замените USERNAME , PASSWORD и HOST . В конце \ny принимается баннер входа в систему - это зависит от моего хоста.

Обратите внимание на одинарные кавычки ' , а двойные кавычки " это потому , что двойные кавычки сказать Bash интерпретировать некоторые символы в строках, такие как восклицательные знаки, как команды Bash истории. Двойные кавычки приведут к сбою этой команды с ошибкой "событие не найдено", если пароль содержит восклицательный знак. Строки в одинарных кавычках передают восклицательные знаки без их интерпретации.

Чтобы отключить:

/opt/cisco/anyconnect/bin/vpn disconnect

Это было проверено с AnyConnect v3.1.05160.

4

Я столкнулся с той же трудностью, пытаясь использовать Cisco AnyConnect от Mac OS X Terminal. Чтобы команда Cisco vpn получала свой ввод от стандартного ввода, необходимо указать параметр -s, который переводит команду Cisco vpn в интерактивный режим. Затем вы можете предоставить ответы, которые вы даете в интерактивном режиме.

Ответы, которые вам нужно дать, зависят от того, как администратор сервера VPN настроил сервер. Для меня интерактивные подсказки vpn

Group: 
Username: 
Password: 

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

Итак, команда, которую я запускаю,

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

(Кавычки вокруг EOF предназначены для предотвращения расширения / замены команды / параметра в следующем входе.)

Выход в конце - выход из интерактивного режима Cisco vpn.

2

Это то, что работало для меня на OSX El Capitan. Заполнители окружены [квадратными скобками].

Включить

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

Отключить

/opt/cisco/anyconnect/bin/vpn disconnect

* Я знаю, что это похоже на ответ Питера С. выше.

2

Мне нравится упрощать командную строку, поэтому я использую описанный выше подход в сценарии оболочки под названием gotowork. Как и выше, мне нужно указать группу, мое имя пользователя и пароль, состоящий из личного ПИН-кода и пароля RSA SecurID. Я не должен отвечать на вышесказанное "принять?вопрос. Все, кроме пароля RSA находится в сценарии, поэтому командная строка

$ gotowork <RSA passcode>

Я должен запустить его как root. Предположим, что PIN-код 1234. Основы сценария:

# 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

Используя anyconnect 3.1.05170. Протестировано на Debian 6, LinuxMint 17

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .