Команда SSH ведет себя по-другому в Expect Script

Команда SSH ведет себя по-другому в Expect Script

Я использую эту команду на Server1

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

для добавления содержимого Server2 id_rsa.pubк authorized_keysсодержимому Server1.

Это работает, если я делаю это вручную, но когда я делаю это в ожидаемом скрипте:

#!/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

При использовании скрипта происходит следующее: id_rsa.pubServer2 добавляется к authorized_keysServer2.

Какой синтаксис будет правильным?

решение1

Похоже, expect не является оболочкой, поэтому он передается >>в качестве аргумента ssh вместо того, чтобы интерпретировать его.

Пытатьсяspawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"

Связанный контент