扬基乌兰诺娃,美眉的变态茅房,愤题和尚诘问
在大规模自动化部署时我们常常需要配置好服务器的SSH互信,以便自动化脚本可以免密登录远程服务器,常规的手动配置SSH互信步骤如下:
#!/usr/bin/expect #此脚本需配合ip.list文件使用,ip.list文件存储所有服务器IP,包含本地服务器。 #此脚本需要和ip.list一起放置在用户~/目录下才能执行。 set passwd xxx --设置服务器密码变量,需要所有服务器上要配置ssh互信的用户的密码全部一致。 spawn ssh-keygen expect { "id_rsa" {send "\r";exp_continue} "Overwrite" {send "y\r";exp_continue} "phrase" {send "\r";exp_continue} "again" {send "\r";exp_continue} } #需要注意的是路径不能以~开头,因此要么写成绝对路径要么写成相对路径,绝对不能用~/来表示家目录。但是如果是$ip:~/却可以,奇坑无比。 spawn cp .ssh/id_rsa.pub .ssh/authorized_keys --这可也可以写成spawn cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys set hosts [open ip.list r] while { [gets $hosts ip]>=0} { spawn scp -r .ssh/ $ip:~/ --这里也可以写成spawn scp -r /root/.ssh/ $ip:/root/ expect { "yes/no" {send "yes\r";exp_continue} "password:" {send "$passwd\r";exp_continue} } } close $hosts
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
网友评论