expect批量分发密钥文件

在做批量分发的时候第一次是两个脚本来完成,后来做了一个expect嵌套,完成了一个脚本进行集成

前提要求服务器需要安装expect

[[email protected] scripts]# yum -y install expect

脚本分析:

#!/bin/bash
key_file=‘/root/.ssh/id_dsa‘

####################### 判断秘钥文件是否存在 ######################
if [ -f $key_file ]
        then
echo "秘钥文件已存在,准备下一步分发"
        else
ssh-keygen -t dsa -P ‘‘ -f /root/.ssh/id_dsa > /dev/null 2>&1
fi

####################### 批量分发秘钥 #########################
for ip in {128..140}       
do
/usr/bin/expect  << EOF > /dev/null 2>&1
set password "root"
spawn  ssh-copy-id -i $key_file "-p 22 [email protected]$ip"
expect {
        "yes/no"        {send "yes\r";exp_continue}
        "*password"     {send "root\r"}
}
expect eof
EOF

####################### 显示分发状态 ##########################
if [ $? -eq 0 ]
        then
echo "192.168.222.$ip 秘钥分发成功"
#echo 0
        else
echo "192.168.222.$ip 秘钥分发失败"
#echo 1
fi
done

脚本效果实现效果:

[[email protected] scripts]# ./send_file 
秘钥文件已存在,准备下一步分发
192.168.222.128 秘钥分发失败
192.168.222.129 秘钥分发失败
192.168.222.130 秘钥分发成功
192.168.222.131 秘钥分发成功
192.168.222.132 秘钥分发成功
192.168.222.133 秘钥分发失败
192.168.222.134 秘钥分发失败
192.168.222.135 秘钥分发成功
192.168.222.136 秘钥分发失败
192.168.222.137 秘钥分发失败
192.168.222.138 秘钥分发失败
192.168.222.139 秘钥分发失败
192.168.222.140 秘钥分发失败

!!!显示分发成功的服务器就可以直接无密码在服务器上进行登陆了

时间: 2024-10-24 20:59:12

expect批量分发密钥文件的相关文章

ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使用sshpass工具了,一条命令形式分发ssh公钥: sshpass -p "ssh登录密码" ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no [email protected]123.56.221.190

expect 批量拷贝key文件并且批量执行简单脚本

一.expect简介 expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话"的程序.根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答. 它是一种可以提供"分支和嵌套结构"来引导程序流程的解释型脚本语言. shell功能很强大,但是不能实现有交互功能的多机器之前的操作,例如ssh和ftp.而expect可以帮助我们来实现. 二.安装expect软件包 #yum install expect -y 注:使用expect批

使用expect 批量分发ssh公钥

#!/usr/bin/expect if {$argc != 2} {  #首先注意大话号,彼此之间需要空格   send_user "USAGE:expect_sshkey.exp file host"   exit } #define var set file [lindex $argv 0] set host [lindex $argv 1] set password "12345" #spawn spawn ssh-copy-id -i $file &quo

SSH批量分发与管理

一.SSH服务介绍 SSH是Secure Shell Protocol的简写,由IETF网络工作小组制定:在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输,确保了传递的数据安全. SSH是专为远程登录会话和其他网络服务提供的安全性协议.利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境当中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件.如telnet等. SSH服务结构: SSH服务是由服务端软件OpenSS

linux批量分发必会面试题,通过邮件反馈结果。

请准备三台linux机器为别为A,B,C,要求实现以下内容1.用自己的名字用户完成一把钥匙开多把锁(A,钥匙,B,C锁)的免密码登录部署场景该题在生产环境中的用途为:批量分发数据,批量发布程序代码,批量控制管理等. 大型批量管理软件pupet/saltstack2.在1题的前提下同样用自己的名字用户完成多把钥匙开一把锁(B,C钥匙,A锁)的免密码登录B--AC--A一题中我们在A创建了锁和钥匙,所以B和C要控制A就先把钥匙发给B和C,因为A本地的锁还不正常,就像A给B和C发公钥一样给自己再发一份

SSH 免密码登录——批量分发服务器

需求:nfs服务器兼做批量分发服务器.backup备份服务器.mb01服务为批量分发的客户端.通过NFS服务器讲编辑好的hosts文件批量分发到备份服务器和mb01服务器的./etc/下.使内网环境可以使用/etc/hosts 文件做正向.反向的域名解析. 由于root具有最大的权限,所以不建议使用root用户进行SSH免密码登录,而是在所有的机器上建立相同的普通用户,通过普通用户的SSH免密码登录,使用scp 命令将hosts文件分发到客户端的该普通用户的家目录下.在各客户端为该普通用户通过s

手工开发SSH-KEY工具(分发密钥、批量执行、分发文件)

前段时间用Shell开发一个SSH-KEY的工具,分享给网友,如果有更好的建议或改动请留言.笔者水平有限,希望大神提点. 这个Shell脚本的功能,可以根据主机或主机组进行管理,以往可能就是一个for循环全部管理....难免有些不顺手 使用说名. 1.目录结构 [[email protected] ssh-key]# tree . ├── bin    #<==这个就是解压后的脚本目录了 │   ├── fenfa-file.sh    #<==分发文件 │   ├── fenfa-key.s

(转)SSH批量分发管理&amp;非交互式expect

目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3.3 利用rsync来实现增量备份 1.4 SSH批量管理分发脚本实战 1.5 SSH批量管理总结 2 非交互式expect 2.1 非交互式生成密钥及实现批量管理 2.2 一键批量安装httpd服务 2.3 一键自动化50台规模集群网站 1 SSH批量分发管理 基于口令的,如何实现批量管理:expe

ssh密钥批量分发

#################以下所有的命令脚本都是在centos7系统上实现,centos6略有不同 客户端使用公钥连接服务器的步骤: 提起ssh我们就能想到的是远程连接,平时我们都是通过密码来登录linux主机,其实我们还是可以通过密钥来登录linux的,那么它的实现步骤是怎样的呢? 第一步:客户端通过ssh-keygen生成一对密钥,会自动存放在家目录的.ssh/authorized_keys文件下 第二步:客户端通过ssh-copy-id把公钥上传到服务器,会自动保存在目的用户家目录