ssh+expect批量分发
Expect安装
[root@web02 scripts]# yum install expect
SSH密钥生成
[root@web02 scripts]# ssh-keygen -t dsa <==生成密钥
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
d8:a6:e4:1f:8a:9a:25:f9:39:6c:74:1e:69:78:78:11 root@web02
The key's randomart image is:
+--[ DSA 1024]----+
| |
| E |
| . |
| .o |
| oooS |
| .+oBo |
| oo.*o.. |
| =+o.o . |
| oo+.. . |
+-----------------+
密钥分发
[root@web02 scripts]# vi ssh_handout.expect <==脚本编写
#!/usr/bin/expect -f
set ip [lindex $argv 0 ] <==接受第一个参数,赋值ip
set password 118530 <==被分发主机密码
set timeout 10
cd ~
spawn ssh-copy-id -i .ssh/id_dsa.pub root@$ip <==发送 .ssh/authorized_keys到目标主机
expect {
"*yes/no" { send "yes\r"; exp_continue} <==遇见“YES/NO” 发送命令“YES”
"*password:" { send "$password\r" } <==遇见“password” 发送命令“密码”
}
expect "#*"
#send "pwd\r"
#send "exit\r"
expect eof
~
~
~
~
~
~
~
~
~
"ssh_handout.expect" 15L, 305C written
[root@web02 scripts]# ./ssh_handout.expect 192.168.162.130 <==测试
spawn ssh-copy-id -i .ssh/id_dsa.pub root@192.168.162.130
root@192.168.162.130's password:
Now try logging into the machine, with "ssh 'root@192.168.162.130'", and check in:
.ssh/authorized_keys <==表示正确
to make sure we haven't added extra keys that you weren't expecting.
expect: spawn id exp4 not open
while executing
"expect eof "
(file "./ssh_handout.expect" line 14)
[root@web02 ~]# ssh root@192.168.162.130 <==免密码登陆
Last login: Thu Jul 21 19:59:12 2016 from 192.168.162.131
[root@web01 ~]# logout
Connection to 192.168.162.130 closed.
[root@web02 ~]# scp data/a.txt root@192.168.162.130:/tmp/ <==免密码传送文件
a.txt 100% 13 0.0KB/s 00:00
[root@web02 ~]# ssh root@192.168.162.130
Last login: Thu Jul 21 20:01:20 2016 from 192.168.162.131
[root@web01 ~]# ls /tmp/
a.txt yum.log
[root@web01 ~]# logout
Connection to 192.168.162.130 closed.
[root@web02 ~]#
[root@web02 scripts]# vi handout.sh <==分发到多个主机脚本
#aim:handout ssh to host
#!/bin/bash
#aim:handout ssh to host
#author:changyaoguo
#date:2016/07/21
. /etc/init.d/functions
for n in 128 129 130 132 133 <==每个主机的部分主机号
do
/server/scripts/ssh_handout.expect 192.168.162.$n >/dev/null 2>&1
action "ssh 192.168.162.$n" /bin/true
done
~
~
~
~
"handout.sh" [New] 10L, 245C written
[root@web02 scripts]# sh handout.sh <==测试
ssh 192.168.162.128 [ OK ]
ssh 192.168.162.129 [ OK ]
ssh 192.168.162.130 [ OK ]
ssh 192.168.162.132 [ OK ]
ssh 192.168.162.133 [ OK ]
希望点个赞!!!!
ssh+expect批量分发的更多相关文章
- ssh密钥批量分发
#################以下所有的命令脚本都是在centos7系统上实现,centos6略有不同 客户端使用公钥连接服务器的步骤: 提起ssh我们就能想到的是远程连接,平时我们都是通过密码来 ...
- expect批量分发公钥
sshkey.exp #!/usr/bin/expect# 由于是多台服务器,需要在shell脚本中循环调用该脚本 if { $argc != 2 } { send_user "usage: ...
- expect批量分发密钥对
vim shell.exp #!/usr/bin/expect set timeout 10 set hostname [lindex $argv 0] set username [lindex $a ...
- SSH KEY 批量分发
代码 #!/bin/sh . /etc/init.d/functions ];then echo "sh $0 arg0" exit fi for ip in 172.23.216 ...
- 【SSH项目实战三】脚本密钥的批量分发与执行
[SSH项目实战]脚本密钥的批量分发与执行 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载, ...
- 【SSH项目实战】脚本密钥的批量分发与执行【转】
[TOC] 前言 <项目实战>系列为<linux实战教学笔记>第二阶段内容的同步教学配套实战练习,每个项目循序衔接最终将组成<Linux实战教学笔记>第二阶段核心教 ...
- ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:
使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...
- (转)SSH批量分发管理&非交互式expect
目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...
- (转)Linux SSH批量分发管理
Linux SSH批量分发管理 原文:http://blog.51cto.com/chenfage/1831166 第1章 SSH服务基础介绍 1.1 SSH服务 1.1.1SSH介绍 SSH是Sec ...
随机推荐
- 如何打开 系统信息窗体和 DirectX诊断工具
开始---运行----msinfo32.exe 运行 位于C:\Program Files\Common Files\Microsoft Shared\Msinfo\msinfo32.exe,显示计算 ...
- Python爬虫学习(2): httplib
httplib模块实现了HTTP和HTTPS的客户端部分,但是一般不直接使用,经常通过urllib来进行HTTP,HTTPS的相关操作. 如果需要查看其源代码可以通过查找命令定位: find / -n ...
- JS:event对象下的target属性和取消冒泡事件
1.target 通过获取DOM元素 var box = document.getElementById("box"); document.box.onclick = functi ...
- scrapy爬虫笔记(三)------写入源文件的爬取
开始爬取网页:(2)写入源文件的爬取 为了使代码易于修改,更清晰高效的爬取网页,我们将代码写入源文件进行爬取. 主要分为以下几个步骤: 一.使用scrapy创建爬虫框架: 二.修改并编写源代码,确定我 ...
- Python2 下 Unicode 的一个小bug
关于Python的编码问题已经是老生常谈了,此处主要是介绍一个罕见的问题,也算是Python2的一个bug了(Python3不会有此问题). 在有时候我们去爬取网页或者调用一些第三方库获取文本的时候, ...
- HashSet
- session的安全性
提到session,大家肯定会联想到登录,登录成功后记录登录状态,同时标记当前登录用户是谁.功能大体上就是这个样子,但是今天要讲的不是功能,而是实现.通过探讨session的实现方式来发掘一些可能你之 ...
- 关于各种类型数据char、int、double、float 所占空间长度的计算,而char类型让我长姿势了
#include <iostream> int main() { using namespace std; //int A=10; //double B=6; cout << ...
- SQL SERVER 查询表或字段在哪里使用过
select b.name from dbo.syscomments a, dbo.sysobjects b where a.id=b.id and b.xtype='p' and a.text li ...
- jdk(多版本)安装注意!
♣安装jdk和jre ♣jdk配置环境变量和测试 ♣安装多版本jdk和切换 ♣jdk下的jre和第二次安装的jre的区别 注意点: 1.jdk版本需要是64位 2.安装JDK 选择安装目录 安装过程中 ...