一个批量执行任务的py脚本
时间:2011-06-20
来源:互联网
放py版块肯定无人问津,劳烦waker等斑竹就别移走了
,这里民工居多,也能减轻负担。
说明,参考了网上的一些人的东西,但我都试过他们的了,都是考虑不全无法使用的,但这种错误还被数人转载,真是误人不浅啊。。
重点参考了pexpect的说明https://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/。
版权没得,随意copy吧。
复制代码
hosts里内容格式如下:
172.18.0.131:root:123456:df -h,uptime
。。。。省略若干。。。
首先安装pexpect, Centos 下yum install pexpect -y即可
说明:默认端口22,root用户登录,日志以ip为文件名记录。
可以把脚本放在nagios监控机器上(因为它到各个服务器都有路由,否则无法监控,还有它有http服务),然后在hosts添加wget任务,再修改hosts添加执行脚本的任务。看来写成类和线程更好些,以后完善之。

说明,参考了网上的一些人的东西,但我都试过他们的了,都是考虑不全无法使用的,但这种错误还被数人转载,真是误人不浅啊。。
重点参考了pexpect的说明https://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/。
版权没得,随意copy吧。
- #!/usr/bin/env python
- #coding=utf-8
-
- import pexpect
- import sys
-
- def ssh_cmd(ip, user, passwd, cmd):
- ssh = pexpect.spawn('ssh %s@%s "%s"' % (user, ip, cmd),timeout=10)
- log = open(ip,"a+b")
- #
- ssh.logfile_read = log
- try:
-
- i = ssh.expect(['password: ','continue connecting (yes/no)?','pexpect.TIMEOUT'])
- if i == 0:
- ssh.sendline(passwd)
- i = ssh.expect(['Password:','pexpect.TIMEOUT'])
- if i == 0:
- ssh.sendline(passwd)
- else:
- print "---------send pwd timout----------"
- elif i == 1:
- ssh.sendline('yes')
- i = ssh.expect(['password: ','pexpect.TIMEOUT'])
- if i == 0:
- ssh.sendline(passwd)
- i = ssh.expect(['Password:','pexpect.TIMEOUT'])
- if i ==0:
- ssh.sendline(passwd)
- else:
- print "----------pwd Timeout----------"
- else:
- print "----------ssh Timeout----------"
-
- elif i == 2:
- print "----------ssh Timeout----------"
-
- except pexpect.EOF:
- ssh.close()
- log.close()
- return "it seems fine"
- else:
- ssh.expect(pexpect.EOF)
- ssh.close()
-
- file = open('hosts.txt')
- try:
- hosts = file.read()
- finally:
- file.close()
-
-
- for host in hosts.split("\n"):
- if host:
- ip, user, passwd, cmds = host.split(":")
- for cmd in cmds.split(","):
- print "-- %s run:%s --" % (ip, cmd)
- print ssh_cmd(ip, user, passwd, cmd)
172.18.0.131:root:123456:df -h,uptime
。。。。省略若干。。。
首先安装pexpect, Centos 下yum install pexpect -y即可
说明:默认端口22,root用户登录,日志以ip为文件名记录。
可以把脚本放在nagios监控机器上(因为它到各个服务器都有路由,否则无法监控,还有它有http服务),然后在hosts添加wget任务,再修改hosts添加执行脚本的任务。看来写成类和线程更好些,以后完善之。
作者: expert1 发布时间: 2011-06-20
人才啊,必须支持!
作者: bbgg1983 发布时间: 2011-06-20
回复 bbgg1983
兄弟,去哪里了,好久不见啊,来bj了吗?
兄弟,去哪里了,好久不见啊,来bj了吗?
作者: expert1 发布时间: 2011-06-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28