Я использую openconnect
Ubuntu 16.04 Terminally, когда я хочу его запустить, мне нужно войти в три фазы:
- "да нет"
- "имя пользователя"
- "пароль"
Как я могу обойти вышеуказанные фазы, используя openconnect
inлиния(например, с помощью openconnect
опций)?
Есть ли какие-либо опции для этого, например, следующая строка?
sudo openconnect <server-name> --user=<'username'> --pass=<'password'>
Я использовал openconnect --help
и нашел способ заполнить имя пользователя, но у меня нет ни малейшего представления о том, как заполнить пароль и пройти проверку SSL.
решение1
Если вы введете man openconnect
в терминале, вы получитестраница руководства с описанием использования.
Соответствующие разделы:
-u,--user=NAME
Установить имя пользователя для входа в NAME--passwd-on-stdin
Прочитать пароль из стандартного ввода
Кроме того, вам может потребоваться отключить предупреждения о сертификатах:
--no-cert-check
Не требовать, чтобы SSL-сертификат сервера был действительным. Проверки все равно будут выполняться, а сбои приведут к появлению предупреждающего сообщения, но соединение все равно будет установлено. Вам не нужно использовать эту опцию — если у ваших серверов есть SSL-сертификаты, не подписанные доверенным центром сертификации, вы все равно можете добавить их (или ваш личный CA) в локальный файл и использовать этот файл с опцией --cafile.
Или вы можете добавить сертификат в файл.
Все это можно объединить:
echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check
решение2
Мне удалось автоматизировать пароль sudo, пользователя VPN, пароль VPN и вторичный вызов с помощью следующей команды (проверено на Mac):
challange=<code> && sudo -S <<< "<sudo_password>" echo I am super user && { printf '<vpn_password>\n'; sleep 1; printf "$challange\n"; } | sudo openconnect <server_name> --user <vpn_username> --passwd-on-stdin
решение3
Мне это подходит:
echo mypassword | openconnect --protocol=anyconnect --user=myusername --passwd-on-stdin
решение4
Читая решения, я наконец нашел скрипт, который работает у меня:
echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert SERVERCERT
При запуске указанной выше команды без SERVERCERT(потому что у тебя его нет), это даетошибкадля вас, который содержит SERVERCERT внутри себя, что-то вроде:
Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=
и это все, строка, начинающаяся с pin-sha256:...(вся она, включая сам pin-sha256) - это ваш SERVERCERT
Итак? Конечный результат в этом случае, например, такой:
echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=