Я использую эту команду на 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.pub
Server2 добавляется к authorized_keys
Server2.
Какой синтаксис будет правильным?
решение1
Похоже, expect не является оболочкой, поэтому он передается >>
в качестве аргумента ssh вместо того, чтобы интерпретировать его.
Пытатьсяspawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"