scp 명령을 실행하여 DNS 서버에 구성 파일을 업로드하는 TCL Expect 스크립트가 있습니다.
#!/usr/bin/expect -f
set config "~/dnsmasq.conf"
spawn /usr/bin/scp "$config" [email protected]:/etc/dnsmasq.conf
expect {
-re ".*yes.*no.*" {
exp_send "yes\r"
exp_continue
}
-re ".*password.*" {
exp_send "$password\r"
expect {
-re ".*denied.*" {
exit 7
}
}
}
}
scp 유틸리티를 찾을 수 없는 경우 특정 오류 코드를 반환하고 싶습니다. 현재 스크립트는 상태 1로 종료됩니다. 스크립트가 상태 7로 종료되면 액세스 거부 오류임을 알기 때문에 문제를 처리할 수 있습니다. Apache 로그에 표시된 오류는 다음과 같습니다.
couldn't execute "/usr/bin/scp": no such file or directory
while executing
"spawn /usr/bin/scp "$config" [email protected]:/etc/dnsmasq.conf"
이 시점에서 오류 코드 5 등을 어떻게 반환할 수 있나요?
답변1
가장 좋은 방법은 존재하고 실행 가능한지 확인하는 것입니다.
if { ! ([file exists /usr/bin/scp] && [file executable /usr/bin/scp])} {
puts stderr "/usr/bin/scp does not exist or is not executable"
exit 7
}
spawn /usr/bin/scp ...