web-dev-qa-db-ja.com

start-stop-daemonを介して開始されたopenconnectへのパスワードの提供

start-stop-daemonを使用するDebian initスクリプトを介してopenconnectを起動しようとしています:

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}

残念ながら、opendinはstdinにリダイレクトされたパスワードを読み取ることができないようで、起動時にパスワードの入力を求めます。

何か案は?

私は結局、openconnectのラッパースクリプトを作成しました。このスクリプトは、パスワードをロードし、openconnectデーモンの標準入力IOWにパイプします。

#!/ bin/bash 
 
 PASSWD = `/ bin/cat /etc/openconnect/passwd`

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

そして、start-stop-daemonは、openconnectの代わりにこのラッパーを呼び出します。

11
Juhan Kundla

openconnect(少なくともバージョン5.02)では、STDINでパスワードを提供できます。

manual から:

--passwd-on-stdin

    Read password from standard input

だからあなたは使うことができます:

echo 'password1' | openconnect --passwd-on-stdin ...
7
Drew Noakes

ラッパーの開始/停止スクリプト。おそらくより良い方法ですが、ちょっとうまくいきます。

#!/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
5
placeholder

古いスレッドですが、最近解決する必要がありました。 gentooのopenconnect intitスクリプトでも、現在安定している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で廃止されました)

2
pietro

パスワードファイルを作成してから、次のコマンドを実行します。

echo $(Sudo cat /usr/local/etc/openconnect/password) | Sudo /usr/local/sbin/openconnect --protocol=gp vpn.myconpany.br -u myusername --passwd-on-stdin
0
Juan Enciso