文档章节

批量上传公钥到centos服务器

实践哥
 实践哥
发布于 2015/06/29 16:47
字数 396
阅读 93
收藏 1

一直以来,都通过ssh-copy-id在手动上传公钥,想着如果有上千台服务器需要上传公钥的话,这个方法就行了。试着实现下批量上传公钥到服务器,介绍本人试的一个方法。

  • 先通过python脚本来试一台机器,python脚本如下:

#!/usr/bin/python

import sys 
import pexpect

ip = sys.argv[1]
password = sys.argv[2]
expect_list = ['(yes/no)', 'password:']

p = pexpect.spawn('ssh-copy-id %s' % ip)
try:
    while True:
        idx = p.expect(expect_list)
        print p.before + expect_list[idx],
        if idx == 0:
            print "yes"
            p.sendline('yes')
        elif idx == 1:
            print password
            p.sendline(password)
except pexpect.TIMEOUT:
    print >>sys.stderr, 'timeout'
except pexpect.EOF:
    print p.before
    print >>sys.stderr, '<the end>'

  使用方法: python sendpublic.py 192.168.2.10 password

  • 上面的python结合shell实现批量上传

把服务器的ip和密码列在一个txt文件中,例如(b.txt):

192.168.1.1 password1

192.168.1.2 password2

192.168.1.3 password3

下面是一个shell程序:

cat a.txt |while read line;do
	ip=`echo $line | awk '{print $1}' #提取ip
	password=`echo $line | awk '{print $2}'` #提取password
	python sendpublic.py $ip $password
done


如上所述,需要注意:

    a.txt的格式,第一个参数是ip,第二个是密码。中间用空格隔开,一般使用这个上批量上传公钥到服务器是没问题的。

    如果公钥没在默认位置的话,python脚本里面的这个语句p = pexpect.spawn('ssh-copy-id %s' % ip),把ssh-copy-id改为 ssh-copy-id -i 公钥位置 即可。
















© 著作权归作者所有

共有 人打赏支持
实践哥
粉丝 68
博文 51
码字总数 35897
作品 0
杭州
运维
私信 提问
加载中

评论(1)

实践哥
实践哥
http://m.myexception.cn/perl-python/1887620.html 解决pexpect使用scp不成功。
Linux上实现ssh免密码登陆远程服务器

0.说明 平常使用ssh登陆远程服务器时,都需要使用输入密码,希望可以实现通过密钥登陆而免除输入密码,从而可以为以后实现批量自动部署主机做好准备。 环境如下: 1.客户端生成密钥对 生成密...

xpleaf
2017/05/12
0
0
批量上传公钥到Linux服务器

一直以来,都通过ssh-copy-id在手动上传公钥,想着如果有上千台服务器需要上传公钥的话,这个方法就行了。试着实现下批量上传公钥到Linux服务器,介绍本人试的一个方法。 1: 先通过python脚本...

君V悦
2017/07/14
0
0
制作不用密码可立即登入的 ssh 用户

1. 客户端建立两把钥匙: 建立的方法很简单,在 clientlinux.centos.vbird 这部主机上面以 vbirdtsai 的身份来建立两把钥匙即可。 不过,需要注意的是,我们有多种密码算法,如果不指定特殊的...

libao2235
2015/04/09
0
0
搭建gitolite服务器

在服务器上创建git用户和组 groupadd -g gid gituseradd -u uid -g gid -d /home/git git passwd git 生成服务器公钥私钥对 ssh-keygencp id_rsa.pub gitadmin.pub 下载gitolite源码 cd /ho......

sunyy_boy
2017/05/24
0
0
AWS s3cmd 的基本操作

过滤一下今天的流程 确定了去把另外一台服务器上的日志加到当前的服务器,当时想的是那货直接把服务器的账号和密码直接给个我,我来搞定,结果发现还是我太单纯了。。。 1、人家直接给我一个...

一千零一夜个为什么
2016/10/28
52
0

没有更多内容

加载失败,请刷新页面

加载更多

再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
C++网络编程(一)gRPC的编译

Google是真滴烦,整个编译链全是自家产品,在编译之前先来安装一堆东西 安装环境依赖 chocolatey Windows下的包管理系统,没有他就慢慢去下载下面的一堆乱七八糟的东西吧。CMD下执行下面这句...

Pulsar-V
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0
手机通过wifi遥控arduino

手机下载Blinker 从Blinker官网下载手机App,安装到手机。 手机连接WiFi。 点击我的设备右上角的"+"添加设备,选择Arduino -> wifi接入,复制密钥以备后续使用。 点击新建的设备,可以在新界...

davidwbnu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部