SSH 명령은 Expect 스크립트에서 다르게 동작합니다.

SSH 명령은 Expect 스크립트에서 다르게 동작합니다.

Server1에서 이 명령을 사용하고 있습니다.

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

Server2의 내용을 Server1의 id_rsa.pub내용에 추가합니다 authorized_keys.

수동으로 수행하면 작동하지만 Expect 스크립트에서 수행하면 작동합니다.

#!/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의 가 Server2의 위에 추가된다는 것입니다 authorized_keys.

올바른 구문은 무엇입니까?

답변1

예상은 쉘이 아닌 것처럼 보이므로 >>해석하는 대신 ssh에 인수로 전달됩니다.

노력하다spawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"

관련 정보