bash 시퀀스:대기 출력,다음 시작한 다음 프로그램
문제
내가 실행 openvpn
전 ssh'ing 으로 서버 openvpn
명령 에코"밖으로 초기 시퀀스를 완료된".
그래서 내가 원하는 스크립트 설치 openvpn
다음 ssh 습니다.
나의 질문은:당신은 어떻게 실행하는 명령에서 배경이 기다리고 그것을 echo""완료하기 전에 다른 프로그램을 실행하면?
나의 현재 방법 2 터미널 창이 열립,실행:
sudo openvpn --config FILE
다른 실행:
ssh SERVER
면 먼저 터미널 창에서는 나에는"초기화 시퀀스를 완료"텍스트입니다.
해결책
그것은 당신처럼 보인다고 싶 실행 openvpn 과정으로 배경에 처리하는 동안 그것의 표준에서 포그라운드.
exec 3< <(sudo openvpn --config FILE)
sed '/Initialization Sequence Completed$/q' <&3 ; cat <&3 &
# VPN initialization is now complete and running in the background
ssh SERVER
설명
Let's break 그것은 조각으로:
echo <(sudo openvpn --config FILE)
인쇄 같은 뭔가/dev/fd63
- 이
<(..)
실행 openvpn 에서 배경,그리고... - 첨부의 표준을 설명자 파일입에 의해 인쇄
echo
- 이
exec 3< /dev/fd63
- (가 /dev/fd63 은 파일 기술자 인쇄에서 1 단계)
- 이 있는지를 알려주는 역할을 열고 파일 기술자(/dev/fd63)을 읽기 위해,그리고...
- 사용할 수 있도록에서 파일 설명
3
sed '/Initialization Sequence Completed$/q' <&3
- 이제 우리는 실행 sed 에서 포그라운드,그러나 그것을 읽기에서 파일 설명
3
리 - 로 sed 보고는 현재 라인이 끝나는"초기화 시퀀스를 완료"는 종료됩니다(이하 /q 일)
- 이제 우리는 실행 sed 에서 포그라운드,그러나 그것을 읽기에서 파일 설명
cat <&3 &
- openvpn 유지 작성하는 파일기술자
3
결국 블록이 없는 경우에서 읽는다 - 을 방지하기 위해,우리가 실행 고양이 에서 배경을 읽고 나머지는 출력
- openvpn 유지 작성하는 파일기술자
기본 아이디어를 실행하는 것입 openvpn
에서 배경지식을 산출이 어딘가에 그래서 우리는 명령을 실행할 수 있습에서 포그라운드 차단하는 때까지 그것을 읽는 마법의 단어"초기 시퀀스를 완료된".위의 코드를 수행하려고 그것을 만들지 않고 지저분한 임시 파일이지만,간단한 방법이 될 수 있는 사용자 임시 파일입니다.
다른 팁
사 -m 1
와 함께 --line-buffered
에 grep 를 종료하 grep 후 첫 경기에서 지속적인다.이동:
sudo openvpn --config FILE | grep -m "Initialization Sequence Completed" --line-buffered && ssh SERVER
제휴하지 않습니다 StackOverflow