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 № 1Puede 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