Предоставление пароля для openconnect, запущенного через start-stop-daemon

Я пытаюсь начать 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 по-прежнему запрашивает пароль при запуске, так как он не может прочитать пароль, перенаправленный на стандартный ввод данных.

Есть идеи?

5 ответов

Я закончил тем, что создал скрипт-обертку для openconnect, который загружает пароль и передает его на стандартный ввод демона openconnect, IOW:

#! / Bin / Баш

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
Другие вопросы по тегам