标签:python
批量上传SSH公钥
一世浮沉
首先需要安装python
yum install python -y
编写一个python脚本 如下:
#vi ssh.py
#!/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) ##如果公钥不是在默认位置的话 ,把ssh-copy-id改为 ssh-copy-id -i 公钥位置 即可。
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 ssh.py 192.168.2.10 password1 #用户名和密码没错一般都可以。)
2: 上面的python结合shell实现批量上传
把服务器的ip和密码列在一个txt文件中,例如(a.txt):
192.168.1.1 password1
192.168.1.2 password2
192.168.1.3 password3
之后再用shell脚本调用 如下
[root@cacti01 opt]# vi ssh.sh
cat a.txt |while read line; do
ip=`echo $line | awk ‘{print $1}‘`
passwd=`echo $line | awk ‘{print $2}‘`
python ssh.py $ip $passwd
done
最后执行./ssh.sh
如果有报错
是因为没有安装python的pexpect模块 安装如下:
pexpect module 安装
pexpect属于第三方的,所以需要安装,
目前的版本是 3.3 下载地址 https://pypi.python.org/pypi/pexpect/
安装步骤:
tar -xzvf pexpect-3.3.tar.gz
cd pexpect-3.3
python setup install (require root)
但是 这个安装需要root权限,如果没有root权限在,还能使用吗?
答案是肯定的,你只需要把lib的路径放入sys.path。这样便可以使用pexpect
#!/usr/bin/env python
import sys
sys.path.append(‘pexpect-3.3/build/lib‘)
确认安装成功:
>>> import pexpect
>>> dir(pexpect)
[‘EOF‘, ‘ExceptionPexpect‘, ‘PY3‘, ‘TIMEOUT‘, ‘__all__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘__path__‘, ‘__revision__‘, ‘__version__‘, ‘_run‘, ‘codecs‘, ‘errno‘, ‘fcntl‘, ‘is_executable_file‘, ‘os‘, ‘pty‘, ‘re‘, ‘resource‘, ‘run‘, ‘runu‘, ‘searcher_re‘, ‘searcher_string‘, ‘select‘, ‘signal‘, ‘spawn‘, ‘spawnu‘, ‘split_command_line‘, ‘stat‘, ‘struct‘, ‘sys‘, ‘termios‘, ‘time‘, ‘traceback‘, ‘tty‘, ‘types‘, ‘which‘]
如上所述,需要注意:
a.txt的格式,第一个参数是ip,第二个是密码。中间用空格隔开,一般使用这个上批量上传公钥到服务器是没问题的。
如果公钥没在默认位置的话,python脚本里面的这个语句p = pexpect.spawn(‘ssh-copy-id %s‘ % ip),把ssh-copy-id改为 ssh-copy-id -i 公钥位置 即可。
另外,上面的程序在运行之前都要先生成个公钥和密码ssh-keygen -t rsa(两次回车即可)
本文出自 “一世浮沉” 博客,请务必保留此出处http://yishifuchen.blog.51cto.com/10542999/1676776
标签:python
原文地址:http://yishifuchen.blog.51cto.com/10542999/1676776