El comando SSH se comporta de manera diferente en Expect Script

El comando SSH se comporta de manera diferente en Expect Script

Estoy usando este comando en el Servidor1

~# ssh root@Server2 /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

para agregar el contenido del Servidor2 id_rsa.pubal authorized_keysdel Servidor1.

Funciona si lo hago manualmente pero cuando lo hago en un script esperado:

#!/usr/bin/expect

set timeout 60

spawn ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

expect "yes/no" { send "yes\r" 
expect "*?assword" { send "[lindex $argv 1]\r" }
    } "*?assword" { send "[lindex $argv 1]\r" }
interact

Lo que sucede cuando uso el script es que el id_rsa.pubdel Servidor2 se agrega al authorized_keysdel Servidor2.

¿Cuál sería la sintaxis correcta?

Respuesta1

Parece que expect no es un shell, por lo que lo pasa >>como argumento a ssh en lugar de interpretarlo.

Intentarspawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"

información relacionada