Em primeiro lugar, seu heredoc age como uma string com aspas duplas, então a variável $expect_out
está sendo substituída pelo shell antes de expect
iniciar. Você precisa garantir que seu heredoc não esteja sendo tocado pela casca. Portanto, quaisquer variáveis do shell precisam ser buscadas de uma maneira diferente. Aqui, estou assumindo que IP
é uma variável de shell e estou transmitindo para o ambiente.
export IP
/usr/bin/expect << 'ENDOFEXPECT'
set prompt ":~#"
spawn ssh root@$env(IP)
expect "password:"
send "xxxx\r"
expect $prompt
send "grep hostname /etc/rc.d/rc.local \n"
expect $prompt
set line $expect_out(buffer)
...more script...
ENDOFEXPECT