我是Linux,Bash和Expect的新手
我目前正在开发一个自动化ssh-keygen和ssh-copy-id进程的脚本
这是想要的行为:
基本上,要在它们之间创建无密码的ssh连接,所有这些连接都在主服务器上自动化。
我想避开" su nagios"命令,因为它会中断等待命令的脚本(或者如果它不正确,请帮我正确使用它。)
期望脚本:
#!/usr/bin/expect
set user [lindex $argv 0]
set server [lindex $argv 1]
send_user $user
send_user $server
spawn ssh-copy-id $user@$server
expect {
"(yes/no)? " {
send "yes\r"
exp_continue
}
"password: " {
send "nagios\r"
send_user "\n"
}
}
expect "$ "
spawn ssh -v $user@$server "ssh-copy-id nagios@192.168.174.142"
expect {
"(yes/no)? " {
send "yes\r"
exp_continue
}
"password: " {
send "nagios\r"
send_user "\n"
}
}
expect "$ "
exit
我想做的事情:
在右侧文件夹中创建密钥:
ssh-keygen -t rsa -N "" -f /home/nagios/.ssh/id_rsa
更改有关用户和域的文字
sed -i s/"root@localhost.localdomain"/"nagios@localhost.localdomain"/g /home/nagios/.ssh/id_rsa.pub
然后我只是将它们复制为ssh-copy-id命令..
cp -Rfv /home/nagios/.ssh/id_rsa /root/.ssh/
cp -Rfv /home/nagios/.ssh/id_rsa.pub /root/.ssh/
我面临的错误:
/usr/bin/ssh-copy-id: ERROR: Host key verification failed.
expect: spawn id exp5 not open
while executing
"expect "$ ""
(file "./copyRemoteKeys.sh" line 36)
有人可以帮助我调试,修复甚至帮助我更好地理解这些东西是如何工作的吗?