원격 서버에 특정 파일의 존재를 알 수있는 expect 스크립트를 작성하고 있습니다. 내 테스트 서버는 원격 서버와 동일한 네트워크에 있습니다. 비슷한 물건에 대해 stackoverflow를 통해 검색하려고했지만 찾을 수있는 것은 로컬 서버에서 작동하는 스크립트를 기대합니다.원격 서버에 파일 존재를 찾기위한 스크립트가 필요합니다.
이 링크 (How to find if a file exists in expect script)가 가장 근접했습니다. "
#! /usr/bin/expect
set fileName [lindex $argv 0]
set hostIp "10.0.0.1"
puts "SSH to server"
spawn sftp [email protected]$hostIp
sleep 2
expect "Password:"
sleep 2
exp_send "local123\r"
sleep 2
expect "sftp> "
sleep 2
set prompt "sftp> "
exp_send "ls $fileName\r"
sleep 2
expect {
"$fileName" { send_user "\n Found \n" }
"sftp>" { send_user "\n Not Found \n" }
}
에 관계없이에 대한 응답의 - 내 스크립트 기대 작성하는 노력 모두를 기반으로
스크립트 기대 Expect with SFTP
- 비슷한 라인에
난에 다음 웹 사이트를 발견 ls $ fileName ", 출력을"Found "로 얻습니다. 기대의 논리는 부분이었다 -
스크립트 출력이 "FOUND"입니다 찾을 수 찾을 수 없습니다 논리
spawn sftp [email protected]
Connecting to 10.0.0.1...
CentOS release 6.2 (Final)
Kernel 2.6.32-279.14.1.el6.x86_64 on an x86_64
Password:
sftp> ls file1.txt
file1.txt
로직 두 경우에 따라서
spawn sftp [email protected]
Connecting to 10.0.0.1...
CentOS release 6.2 (Final)
Kernel 2.6.32-279.14.1.el6.x86_64 on an x86_64
sftp> ls file2.txt
Couldn't stat remote file: No such file or directory
Can't ls: "/file2.txt" not found
sftp>
난을하지 않는 곳이다 논리. 파일이 있으면 파일 이름이 팝업 될 것으로 예상됩니다. 그 외에는 "Could not state ....."라는 메시지를보기를 기대합니다.
질문
는 프롬프트를 감지 기대할 수 있습니까? 어딘가에 저장할 수 있습니까?
원격 서버에 파일이 있는지 확인하는 더 좋은 방법이 있습니까?
내 스크립트에 문제가 있습니까?
도움을 주셔서 감사합니다.
$ fileName은 (는) 발견 된 응답과 찾을 수없는 응답에 모두 존재합니다. –
@BradLanam - 파일이 발견되면 "ls $ fileName"의 출력은 fileName 자체가됩니다. 발견 된 논리 에서처럼. 파일은 그 다음없는 인쇄 것이 발견되지 않는 경우 - 원격 파일에 시작할 수 없습니다 : 는 LS 할 수 없습니다 그런 파일이나 디렉토리 : "/file2.txt는"SFTP> –