Thi*_*kel 8 debian init.d start-stop-daemon openconnect
我正在尝试openconnect通过使用以下内容的 Debian init 脚本启动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}
Run Code Online (Sandbox Code Playgroud)
不幸的是,openconnect 在启动期间仍然提示输入密码,因为它似乎无法读取重定向到 stdin 的密码。
有任何想法吗?
小智 11
我最终为 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 上提供密码。
从手册:
Run Code Online (Sandbox Code Playgroud)--passwd-on-stdin Read password from standard input
所以你可以使用:
echo 'password1' | openconnect --passwd-on-stdin ...
Run Code Online (Sandbox Code Playgroud)
小智 6
我的包装器启动/停止脚本。可能是更好的方法,但嘿它工作得很好。
#!/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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23764 次 |
| 最近记录: |