следующий сценарий ожидания удалит файл /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
командах вот так. Если вы можете, вам, вероятно, по крайней мере, нужно процитировать это для tcl. При этом, если expect не читает стандартную ошибку (и я не припоминаю навскидку, если это так), вы, вероятно, можете прикрепить это к выполнениюexpect -c
напрямую, чтобы получить то, что вы хотите. - person Etan Reisner   schedule 04.11.2014