我正在尝试编写一个脚本,自动输入密码“root”,将ssh-key从A复制到B。由于ssh-copy在B上无法使用,也无法安装,因此我使用了:
ssh root@$ip mkdir -p .ssh
cat "~/.ssh/id_rsa.pub" | ssh "root@$ip" 'cat >> .ssh/authorized_keys'
需要传输密钥。但是B在重新启动时会删除其存储。所以我需要自动化这个过程。我认为expect脚本可能是最简单的解决方案?但我对此并不是非常有经验。
#!/usr/bin/expect
#31.09.2015
set timeout 30
spawn ssh "root@$ip mkdir -p .ssh"
expect "password:"
send "root\r"
expect "(yes/no)? "
send "yes\r"
spawn cat "~/.ssh/id_rsa.pub" | ssh "root@$ip" 'cat >> .ssh/authorized_keys'
expect "password:"
send "root\r"
interact
看起来在第一次发送后它能够正常工作,但是之后就会卡住并等待输入?(期望值错误?)