互信脚本

链接:https://pan.baidu.com/s/1woaT0qcQmhzWKpM-YsA76g 

提取码:m8j7

[root@server1 ~]# cat /home/auth/README.md

使用步骤:
#首先在执行机上安装expect包yum localinstall -y tcl-8.5.13-8.el7.x86_64.rpm expect-5.45-14.el7_1.x86_64.rpm,机器有yum源直接执行yum install -y expect也可以
1.将auth目录放到执行机/home下
2.在执行机执行ssh-keygen -t rsa,一直回车。建立公钥(远端使用)和私钥(本地使用)
#参数 -t rsa 表示使用rsa算法进行加密
#执行后,会在/home/当前用户/.ssh目录(root用户在/root/.ssh)下找到id_rsa(私钥)和id_rsa.pub(公钥)
2.增加执行权限chmod +x /home/auth/chroot.exp
3.将需要做互信的机器ip写到ips文件中
4.执行sh /home/auth/exec.sh即可完成互信

[root@server1 ~]# cat /home/auth/ips 

192.168.0.104
192.168.0.109
192.168.0.108
192.168.0.102
192.168.0.105
192.168.0.106

[root@server1 ~]# cat /home/auth/exec.sh 

#!/bin/bash
for ip in `cat /home/auth/ips`
do
    /home/auth/chroot.exp $ip >/dev/null
    echo "$ip"
done

[root@server1 ~]# cat /home/auth/chroot.exp

#!/usr/bin/expect
#lindex $argv 0表示IP这个变量取.exp文件后面跟的第一个字符
set IP [lindex $argv 0]
set ANSWER yes
set PASSWD redhat
#设置超时时间,单位是秒,-1表示无限等待
set timeout -1
#ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。-i指定公钥文件。如果是和远程机器root之外的用户做互信,只需要把@$IP前的root改为其他用户名即可
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP
#expect判断上次输出结果里是否包含connecting字符串,包含就发送$ANSWER。没有就等待一段时间发送,这个等待时间就是前面timeout的值
expect {
#在执行sqawn后面的命令时在匹配到的connecting字符的交互界面里面输入$ANSWER,如果没有这条交互,ecp_continue表示跳过继续进行下一条交互界面匹配。\r表示回到行首,这里可解释为回车。
    "*connecting" { send "$ANSWER\r" ; exp_continue }
    "*password" { send "$PASSWD\r" }
}
#退出expect环境,interact代表留在expect环境
expect eof

posted on 2019-12-19 20:58  vorn  阅读(343)  评论(0)    收藏  举报

导航