/ / Dos comandos o comando comando pipe - Spawn Expect - linux, bash, shell, ssh, expect

Dos comandos o comandos de canalización - Spawn Expect - linux, bash, shell, ssh, expect

Estoy tratando de ejecutar un script expect en bash, pero cuando intento ejecutar el shell sin "| tee -a xxx.log"(donde xxx.log es un archivo del que quiero escribir para grabar la sesión ssh).

Este código funciona bien:

comlog="ssh $USR@192.168.228.20"
expect -c"
spawn "$comlog"
expect "Password:"
send "$PASSr"
interact
"

Pero cuando intento agregar el comando "tee -a" para guardar la sesión ssh, el problema es

invalid command name "ssh"
while executing

Este es el comando completo donde obtengo el mensaje de error

 comlog="ssh $USR@192.168.228.20 | tee -a /home/xxx.log"
expect -c"
spawn "$comlog"
expect "Password:"
send "$PASSr" #Already Obteined
interact
"

Intenté cambiar el var "comlog" de esta manera pero no funciona :(

 cssh $USR@192.168.228.20 | tee -a /home/xxx.log

¿Alguien sabe otra manera de guardar la sesión ssh iniciada de esperar? O cómo puedo enviar esos dos comandos en el mismo comando spawn.

Respuestas

0 para la respuesta № 1

Puede capturar la salida esperada de la sesión de esta manera:

 comlog="ssh $USR@192.168.228.20"
expect -c"
spawn "$comlog"
expect "Password:"
send "$PASSr" #Already Obteined
interact
" >/home/xxx.log

0 para la respuesta № 2

Si desea colocar metacaracteres de shell como la canalización, tendrá que generar un shell para manejarlos. También usar un documento aquí puede ayudar mucho con las citas.

comlog="ssh $USR@192.168.228.20 | tee -a /home/xxx.log"
expect <<"END_EXPECT"
spawn sh -c "$comlog"
... rest of expect script
END_EXPECT