ilo2를 시작하는 스크립트가 예상되지만 제대로 작동하지만 종료할 수 없습니다.

ilo2를 시작하는 스크립트가 예상되지만 제대로 작동하지만 종료할 수 없습니다.

이것은 ILO2 HP 서버를 시작하는 스크립트입니다. 제대로 작동하지만(서버 전원이 켜져 있음) iLO 콘솔 전원이 계속 켜진 후에는 ctrl+c를 사용하여 스크립트를 수동으로 종료할 수 있으므로 스크립트가 완전히 비대화형이 아닙니다. 올바른 ^D를 슬레이브 콘솔에 전달하려면 어떻게 해야 합니까? 그만두다?

#!/usr/bin/expect -f

set force_conservative 0  ;# set to 1 to force conservative mode even if
              ;# script wasn't run conservatively originally
if {$force_conservative} {
    set send_slow {1 .1}
    proc send {ignore arg} {
        sleep .1
        exp_send -s -- $arg
    }
}

set timeout -1
set send_slow {1 .1}
spawn csh
match_max 100000
expect -exact "% "
sleep .1
send -s -- "ssh hpilo2\r"
expect -exact "ssh hpilo2\r\r
This is a private system. It is to be used solely by authorized users and may be monitored for all lawful purposes. By accessing this system, you are consenting to such monitoring.\r
\rmyuser@hpilo2's password: "
sleep .1
send -s -- "mypass\r"
expect -exact "\r
User:myuser logged-in to hpilo2.(******* / *********)\r
\r
iLO Advanced **** at  Feb 28 2041\r
Server Name: \r
Server Power: Off\r
\r
</>hpiLO-> "
sleep .1
send -s -- "power on\r"
expect -exact "
\r\r
status=0\r
status_tag=COMMAND COMPLETED\r
Sat Dec 6 12:38:17 2031
\r
\r
\r
Server powering on .......\r
\r
\r
\r
</>hpiLO-> "
sleep .1
send -- "^D"
expect eof

답변1

해결 방법 hpilo 쉘에서 CTRL+D가 아무 작업도 수행하지 않는다는 것을 알았습니다. 쉘을 종료하는 명령은 ..exit입니다. 그래서 스크립트의 최신 줄을 수정했습니다.

Server Name: \r
Server Power: Off\r
\r
</>hpiLO-> "
sleep .1
send -s -- "power on\r"
sleep 2
send -s -- "^exit\r"

이제 완벽하게 작동합니다

관련 정보