SSH 指令在 Expect 腳本中的行為有所不同

SSH 指令在 Expect 腳本中的行為有所不同

我在 Server1 上使用此命令

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

將 Server2 的內容附加id_rsa.pubauthorized_keysServer1 的內容。

如果我手動執行它,但當我在期望腳本中執行它時,它會起作用:

#!/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不是一個shell,所以它>>作為參數傳遞給ssh而不是解釋它。

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

相關內容