Scp
此時如何在我的 TCL 腳本中返回特定的錯誤程式碼?
我有一個 TCL 期望腳本,它執行 scp 命令將配置文件上傳到我的 DNS 伺服器:
#!/usr/bin/expect -f set config "~/dnsmasq.conf" spawn /usr/bin/scp "$config" root@192.168.1.1:/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" root@192.168.1.1:/etc/dnsmasq.conf"
此時如何返回錯誤程式碼 5 或其他內容?
最好的方法是檢查它是否存在並且是否可執行:
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 ...