我在 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不是一個shell,所以它>>
作為參數傳遞給ssh而不是解釋它。
嘗試spawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"