Python的pxssh实现ssh登录之批量“打杂”
一、简单概要
这是我在生产环境用的一个脚本,根据实际运维情况编写,说白了就是人比较懒,不想打杂。哈哈!不明白的同学可以@我哦!,感谢!
二、代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/usr/bin/env python
from
pexpect
import
pxssh
import
os
try
:
for
i
in
range
(
64
,
65
):
#在这个位置定义起始和结束的数字用于IP的主机号
s
=
pxssh.pxssh()
ipaddr
=
'192.168.1.%s'
%
i
#生成一个完整的IP地址
os.environ[
'ip'
]
=
str
(ipaddr)
#变量呼唤,python变量可以在shell里拿
print
'ssh connection host:%s'
%
ipaddr
s.login(ipaddr,
'root'
,
'123456'
)
#登录主机(ip,用户,密码)
print
'login ok!'
#提示登录ok而已,仅此而已
print
'Create (/etc/ceph/) directory...'
#登录进去就得干活了,比如创建目录
s.sendline(
'mkdir -p /etc/ceph'
)
print
'create ok!'
print
'Issued by the configuration file...'
os.system(
'sshpass -p 123456 scp /etc/ceph/* root@$ip:/etc/ceph'
)
#这个文件是下发文件,这里跟pxssh没关系
print
'file issued ok!'
print
'Issued by the script...'
s.sendline(
'mkdir -p /openstack'
)
#这里也是在远程主机执行命令,其他的都类似
os.system(
'sshpass -p 123456 scp /root/osd.sh root@$ip:/openstack'
)
os.system(
'sshpass -p 123456 scp /root/com.txt root@$ip:/openstack'
)
print
'script issued ok!'
print
'Run the script...'
s.sendline(
'sh /openstack/osd.sh'
)
print
'script run ok!'
s.prompt()
print
'host:%s completes, exit the ssh...'
%
ipaddr
s.logout()
print
'exit ok!'
except
pxssh.ExceptionPxssh, e:
print
"pxssh failed on login"
print
str
(e)
|