사용자 입력을 받아들인 다음 다른 스크립트를 실행하는 스크립트를 실행할 수 있습니까?

사용자 입력을 받아들인 다음 다른 스크립트를 실행하는 스크립트를 실행할 수 있습니까?

나는 실행하려고합니다 :

  1. 스크립트1: VPN을 시작하려면 비밀번호가 필요합니다.
  2. Script2: Script1은 시작되어야 합니다(끝나면 안 됨). 원격 데스크톱 시작

하나의 명령으로 두 명령을 모두 실행할 수 있습니까? 시도할 때마다 Script1 &오류가 발생하지만 실행하면 정상적으로 작동합니다 Script1. Script1 && Script2Script2를 시작해야 하는데 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"

그리고 VPN이 연결된 후에만 포그라운드에서 Script1을 실행합니다. (이는 감지하기 어려울 수 있습니다. 아마도 나타날 때까지 원격 측에 핑을 보내는 것일 수 있습니다.)

저는 openconnect에 익숙하지 않아서 그것이 무엇인지 추측하고 있습니다. 터미널에서 사용자 입력이 필요한 경우 백그라운드에서 실행 openconnect한 다음 VPN 연결이 끊어질 때까지 차단하면 작동하지 않습니다. 하지만 이것이 작동하는 방식이라면 비밀번호를 읽은 후 백그라운드로 들어갈 수 있는 옵션이 있을 수 있습니다.

관련 정보