2012-10-20 5 views
0

스트림에서 foo-[패턴] .tgz를 생성하고 패턴을 반환하여 향후 명령에서 사용할 수 있도록하려면 어떻게해야합니까?예상 출력에서 ​​패턴을 추출하십시오.

나는 동일한 동작을 반복적으로 수행하고 있으며 기대를 사용하여 자동화하려고합니다. 한 시스템에 ssh를 설치하고 파일을 생성하는 스크립트를 실행 한 다음 해당 시스템의 파일을 다른 두 시스템에 scp로 저장합니다.

ssh를 생성하고 파일 빌드를 성공적으로 트리거 할 수 있습니다. 복사를 수행하기 위해 생성 된 파일의 이름을 캡처하는 방법을 모르겠습니다. 이 스크립트는 "foo- 타임 스탬프.tgz ... 완료"와 같은 결과를 출력합니다. 그리고 타임 스탬프은 실행마다 분명히 다르며, 부실한 foo 파일 (타임 스탬프)이있을 수 있으므로 glob scp (즉 scp foo-*tgz)를 사용하고 싶지 않습니다.

저는 예전에 새로운 것을 보았지만 아직 예제를 찾지 못해서 가끔씩 손을 꼭 잡아야합니다. 모든 제안/도움을 많이 주시면 감사하겠습니다.

답변

2

패턴을 캡처 할 수 있는지는 잘 모르겠지만 일반적으로 이러한 상황에서 변수 출력을 저장 한 다음이 출력을 사용합니다. 예를 들어, send -- "./executeSomeScript\r"는 "... 완료 foo는-timestamp.tgz 생성"같은 출력을 줄 것이다, 나는 있습니다

send -- "output=`./executeSomeScript`\r" 
send -- "filename=`echo \$output | awk '{ print \$2 }'\r" 

마지막

send -- "scp \$filename [email protected]:path\r" 

와 send 명령을 대체합니다 $을 이스케이프 처리해야 스크립트 수준에서 해석되지 않고 원격 쉘로 리터럴로 보내야합니다.

관련 문제