是否可以执行接受用户输入的脚本然后执行另一个脚本

是否可以执行接受用户输入的脚本然后执行另一个脚本

我正在尝试运行:

  1. Script1:需要密码来启动 VPN
  2. 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 断开连接,那么在后台运行它就不起作用。但如果这是它的工作方式,它可能可以选择在读取密码后进入后台。

相关内容