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"

관련 정보