Linux 集群批量免密脚本

本文介绍如何使用expect脚本在Centos集群中自动进行SSH免密配置,通过逐行读取hosts文件,减少了手动输入密码的繁琐,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作集群执行一些批量任务时,常常会从操作节点访问其他机器,这时免密配置可以减少许多不必要的时间损耗。另一方面,若是集群节点数量众多,手动配置免密时重复输入密码也是很麻烦的事情。这种重复性工作完全可以交给代码去做。而此处用到的重要工具就是 expect。

1 话不多说,代码如下

#vi /usr/tools/keyshare.sh

#generate key
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

#distribute key with corresponding user-host
while read line
  do
    host=`echo $line | cut -d " " -f1`
    user=`echo $line | cut -d " " -f2`
    pwd=`echo $line | cut -d " " -f3`
    expect <<EOF
      set timeout 15
      spawn ssh-copy-id $user@$host
      expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$pwd\n" }
      }
     expect "password" { send "$pwd\n" }
EOF
done <  ~/.hosts

2 所用到的~/.hosts文件示例内容如下

chdp01 root password
chdp02 root password
chdp03 root password

3 在minimal安装的Centos7上并没有expect工具,执行以下代码手动安装。

yum install -y expect

4 测试如下,此时不用输入密码即可以访问到另一台节点上执行代码了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值