私は実行しようとしています:
- スクリプト1:VPNを起動するにはパスワードが必要です。
- Script2:Script1は起動する必要があります(終了しないでください)。リモートデスクトップの起動
1つのコマンドで両方のコマンドを実行できますか?試行するたびに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"
そして、VPNが接続された後にのみフォアグラウンドでScript1を実行します。 (これは検出するのが難しいかもしれません。おそらく現れるまでリモート側にpingを送ることです)
私はopenconnectに慣れていないので、それが何であるかを推測しています。端末でユーザー入力が必要な場合は、バックグラウンドで実行してopenconnect
からVPN接続が切断されるまでブロックすると機能しません。しかし、これがうまくいくなら、パスワードを読んだ後にバックグラウンドに入るオプションがあるかもしれません。