我正在尝试运行:
- Script1:需要密码来启动 VPN
- Script2:Script1 必须开始(但不能结束)。启动远程桌面
是否可以用一个命令同时运行这两个命令?每次我尝试Script1 &
它都会出错,但如果我运行则工作正常Script1
。我不能这样做,Script1 && Script2
因为当 Script2 需要启动时 Script1 尚未完成。
脚本1:
VPNUSER=Rilcon42
VPNGRP=01
# =============================================================================
# you shouldn't have to change anything below here
VPNURL=https://remote.someserver.edu
VPNSCRIPT=/usr/share/vpnc-scripts/vpnc-script
sudo openvpn --mktun --dev tun1 && \
sudo ifconfig tun1 up && \
sudo /usr/sbin/openconnect -s $VPNSCRIPT $VPNURL --user=$VPNUSER --authgroup=$VPNGRP --interface=tun1
sudo ifconfig tun1 down
脚本2:
rdesktop 123.1234.23.1453
答案1
脚本1+2:
VPNUSER=Rilcon42
VPNGRP=01
# =============================================================================
# you shouldn't have to change anything below here
VPNURL=https://remote.someserver.edu
VPNSCRIPT=/usr/share/vpnc-scripts/vpnc-script
sudo openvpn --mktun --dev tun1 && \
sudo ifconfig tun1 up && \
sudo /usr/sbin/openconnect -s $VPNSCRIPT $VPNURL --user=$VPNUSER --authgroup=$VPNGRP --interface=tun1 &
rdesktop 123.1234.23.1453
wait
sudo ifconfig tun1 down
答案2
从终端读取用户输入的部分需要在前台运行。在大多数设置中,sudo
需要在前台运行。
调用sudo
整个脚本。像这样单独调用sudo
来运行连续的命令没有多大意义。
假设openconnect
不读取用户输入,更改Script
为
VPNUSER=Rilcon42
VPNGRP=01
VPNURL=https://remote.someserver.edu
VPNSCRIPT=/usr/share/vpnc-scripts/vpnc-script
sudo -b sh -c '
openvpn --mktun --dev tun1 &&
ifconfig tun1 up && {
/usr/sbin/openconnect -s "$1" "$2" --user="$3" --authgroup="$4" --interface=tun1
ifconfig tun1 down
}
' "$VPNSCRIPT" "$VPNURL" "$VPNUSER" "$VPNGRP"
并在前台运行 Script1,但仅在 VPN 连接后(这可能很烦人检测 - 可能通过 ping 远程端直到它出现)。
我不熟悉 openconnect 所以我猜测它是做什么的。如果openconnect
需要用户从终端输入,然后阻止直到 VPN 断开连接,那么在后台运行它就不起作用。但如果这是它的工作方式,它可能可以选择在读取密码后进入后台。