1

メインの bash スクリプトに変数を設定するために、次のような期待スクリプトが必要です。つまり、$SSH_SUCCESS を合格/不合格の文字列に設定したいと考えています。$expect_out と $::env(SSH_SUCCESS) を使用してみましたが、失敗しました。期待からbash変数を設定するにはどうすればよいですか?

expect << EOF
log_user 0
log_file $TEST_LOG
set timeout 5
spawn ssh root@$RADIO_IP

.....
....expect script, echoing the return of an SSH command...

send "echo\$?\n"
expect {
  "0" {
        send_user "SSH test: PASSED\r"
        SSH_SUCCESS="PASSED"
      }
  "1" {
        send_user "SSH test: FAILED\r"
        SSH_SUCCESS="FAILED"
      }


sleep 1
send_user "\n"
exit

EOF    

  echo $SSH_SUCCESS
4

2 に答える 2

1

Expectはわかりませんが、このようなものだと思います

SSH_SUCCESS=$(expect <<EOF
...
expect {
  "0" {
        puts "PASSED"
      }
  "1" {
        puts "FAILED"
      }
...
EOF
)

echo $SSH_SUCCESS
于 2013-07-24T06:11:58.330 に答える
0

変数を設定する方法はありません。

これは、Expect の終了ステータスを判断する別の方法です。

expect << EOF
log_user 0
log_file $TEST_LOG
set timeout 5
spawn ssh root@$RADIO_IP

.....
....expect script, echoing the return of an SSH command...

send "echo\$?\n"

expect -re "\[0-9\]+$"
#set latest command exit status to valiable "exit_code"
set exit_status \$expect_out(0,string)

if { \$exit_status == 0 } {
    send_user "SSH test: PASSED\r"
} else {
    send_user "SSH test: FAILED\r"
}

sleep 1
send_user "\n"
# exit expect as latest command exit status
exit \$exit_status
EOF

if [ $? -eq 0 ];then
    SSH_SUCCESS="PASSED"
else
    SSH_SUCCESS="FAILED"
fi
echo ${SSH_SUCCESS}
于 2013-07-24T13:20:54.343 に答える