Fornecendo a senha para openconnect iniciada via start-stop-daemon

5

Eu estou tentando iniciar o openconnect através de um script de init do Debian que faz uso do 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}

Infelizmente, o openconnect ainda solicita uma senha durante a inicialização, pois parece não conseguir ler a senha redirecionada para stdin.

Alguma idéia?

    
por Thilo-Alexander Ginkel 24.03.2014 / 15:19

5 respostas

10

Acabei criando um script wrapper para o openconnect, que carrega a senha e canaliza para o stdin do daemon openconnect, IOW:

#!/bin/bash

PASSWD='/bin/cat /etc/openconnect/passwd'

/bin/echo $PASSWD | /usr/sbin/openconnect $@

E o start-stop-daemon invoca este wrapper em vez do openconnect.

    
por 11.09.2014 / 14:57
5

Meu script de início / parada do wrapper. Provavelmente a melhor maneira, mas ei está funcionando muito bem.

#!/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
    
por 06.01.2015 / 05:05
3

openconnect (pelo menos na versão 5.02) permite fornecer a senha no STDIN.

Do manual :

--passwd-on-stdin

    Read password from standard input

Então você pode usar:

echo 'password1' | openconnect --passwd-on-stdin ...
    
por 12.12.2014 / 12:37
2

É um tópico antigo, mas precisei resolvê-lo recentemente. Eu tenho o mesmo problema no script intitulado openconnect no gentoo com o openconnect-4.08 atualmente estável. Eu consegui trabalhar modificando o comando start-stop-daemon start para isto:

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 está obsoleto no openconnect-4.08)

    
por 09.09.2015 / 21:49
0

Eu criei um arquivo de senha e, em seguida, execute este comando:

echo $(sudo cat /usr/local/etc/openconnect/password) | sudo /usr/local/sbin/openconnect --protocol=gp vpn.myconpany.br -u myusername --passwd-on-stdin
    
por 22.10.2017 / 16:09