Я пытаюсь начать openconnect
через сценарий инициализации Debian, который использует start-stop-daemon
:
DAEMON=/usr/sbin/openconnect
DAEMON_ARGS="<endpoint> --script /etc/vpnc/vpnc-script --user <user> --pid-file $PIDFILE --passwd-on-stdin"
PASSWORD=`cat /etc/openconnect/<endpoint>.passwd`
start-stop-daemon --start --pidfile "$PIDFILE" --exec "$DAEMON" -- $DAEMON_ARGS <<< ${PASSWORD}
К сожалению, openconnect по-прежнему запрашивает пароль во время запуска, поскольку, похоже, он не может прочитать пароль, перенаправленный на стандартный ввод.
Любые идеи?
Я закончил тем, что создал сценарий оболочки для openconnect, который загружает пароль и передает его на стандартный ввод демона openconnect, IOW:
#!/bin/bash PASSWD=`/bin/cat /etc/openconnect/passwd` /bin/echo $PASSWD | /usr/sbin/openconnect $@
И start-stop-daemon вызывает эту оболочку вместо openconnect.
openconnect
(по крайней мере, в версии 5.02) позволяет указать пароль на STDIN.
Из руководство:
--passwd-on-stdin Read password from standard input
Итак, вы можете использовать:
echo 'password1' | openconnect --passwd-on-stdin ...
Мой сценарий запуска / остановки оболочки. Возможно, лучший способ, но он отлично работает.
#!/bin/bash
username="myuser"
password="password"
url="https://url.tosomewhere.se"
pidfile="/tmp/openconnect-pid"
case "$1" in
start)
#bad certs
#echo "$password" | openconnect -b --pid-file=$pidfile --no-cert-check --user=$username $url
echo "$password" | openconnect -b --pid-file=$pidfile --user=$username $url
;;
stop)
cat $pidfile | xargs kill -2
;;
*)
echo "$0 <start|stop>"
exit 1
esac
Это старая тема, но мне недавно нужно было ее решить. У меня такая же проблема в скрипте openconnect intit в gentoo с в настоящее время стабильным openconnect-4.08. Я получил его, изменив start-stop-daemon
запустить команду к этому:
start-stop-daemon --start --make-pidfile --pidfile "${VPNPID}" \
--stderr "${VPNERRFILE}" --stdout "${VPNLOGFILE}" \
--background --exec /bin/bash \
-- -c "exec /usr/sbin/openconnect --pid-file=\"${VPNPID}\" ${!VPNOPTS} ${!SERVER} <<< \`echo \"${!PASSWORD}\"\`"
(--startas
устарело в openconnect-4.08)
Я создал файл паролей, а затем запустил эту команду:
echo $(sudo cat /usr/local/etc/openconnect/password) | sudo /usr/local/sbin/openconnect --protocol=gp vpn.myconpany.br -u myusername --passwd-on-stdin