以下期望脚本将删除远程计算机上的文件/ var / tmp / file
但在此之前,期望脚本会在远程计算机上执行ssh,
我把2>/tmp/errors
为了从ssh捕获错误
但是我注意到尽管ssh到远程发送错误,但我看不到/tmp/errors
文件中的错误
但是当我尝试手动
ssh $LOGIN@$machine
然后SSH失败 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
但是从期望中我无法捕捉到这个错误 /tmp/erros
请指教出什么问题了?为什么2>/tmp/errors
不捕获错误?
expect_test=`cat << EOF
set timeout 50
spawn ssh $LOGIN@$machine 2>/tmp/errors
expect {
")?" { send "yes\r" ; exp_continue }
word: { sleep 1 ; send $PASSORD\r}
}
expect > {send "sleep 1\r"}
expect > {send "rm -f /var/tmp/file\r"}
expect > {send exit\r}
expect eof
EOF`
expect -c "$expect_remove_file"
spawn
不了解I / O重定向。代替
spawn ssh $LOGIN@$machine 2>/tmp/errors
与任何
spawn ssh $LOGIN@$machine -E /tmp/errors
# -E log_file tells ssh where to write the error log instead of stderr
或者
spawn sh -c "ssh $LOGIN@$machine 2>/tmp/errors"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句