SSH コマンドは Expect スクリプトで異なる動作をします。

SSH コマンドは Expect スクリプトで異なる動作をします。

Server1 でこのコマンドを使用します。

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

Server2の内容をServer1の内容id_rsa.pubに追加します。authorized_keys

手動で実行しますが、予想されるスクリプトで実行すると機能します。

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

予想はシェルではないので、解釈>>する代わりにsshに引数として渡されます。

努力するspawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"

おすすめ記事