时间:2014-01-29 来源:

ssh批量登录并执行命令的python实现代码

局域网内有一百多台电脑web前端制作,全部都是linux操作系统,web前端制作所有电脑配置相同div前端切图,ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令web切图报价,者说进行某些操作,手机html制作比如安装某些软件符合w3c标准,拷贝某些文件,符合w3c标准批量关机等.如果一台一台得手工去操作网页外包接活,费时又费力,jpg或psd转html如果要进行多个操作就更麻烦啦.
或许你会想到网络同传web前端制作, 网络同传是什么?就是在一台电脑上把电脑装好,web前端制作配置好承接网页制作,然后利用某些软件,承接网页制作如“联想网络同传”把系统原样拷贝过去web切图报价,在装系统时很有用,网站div+css只要在一台电脑上装好符合w3c标准,同传以后所有的电脑都装好操作系统了,符合w3c标准很方便.同传要求所有电脑硬件完全相同网页外包接活,在联想的电脑上装的系统传到方正电脑上肯定会出问题的.传系统也是很费时间的,网页外包接活根据硬盘大小web前端制作,如果30G硬盘,div+css制作100多台电脑大约要传2个多小时承接网页制作,反正比一台一台地安装快!但是如果系统都传完了,承接网页制作发现忘了装一个软件web切图报价,或者还需要做些小修改,手机html制作再同传一次可以符合w3c标准,但是太慢,html切图制作传两次半天时间就没了.这时候我们可以利用ssh去控制每台电脑去执行某些命令.
先让我们回忆一下ssh远程登录的过程:首先执行命令 ssh username@192.168.1.x ,第一次登录的时候系统会提示我们是否要继续连接,网页外包接活我们要输入“yes”,然后等一段时间后系统提示我们输入密码,web前端制作正确地输入密码之后我们就能登录到远程计算机承接网页制作,然后我们就能执行命令了.我们注意到这里面有两次人机交互,div前端切图一次是输入‘yes',另一次是输入密码.就是因为有两次交互我们不能简单的用某些命令去完成我们的任务.我们可以考虑把人机交互变成自动交互,手机html制作python的pexpect模块可以帮我们实现自动交互.下面这段代码是用pexpect实现自动交互登录并执行命令的函数:
复制代码 代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret

利用pexpect模块我们可以做很多事情,web前端制作由于他提供了自动交互功能承接网页制作,telnet,scp等的自动登录符合w3c标准,还是比较实用的.根据上面的代码相信读者已经知道怎么实现了(python就是那么简单!).
用上面的代码去完成任务还是比较费时间的,符合w3c标准因为程序要等待自动交互出现网页外包接活,另外ubuntu用ssh连接就是比较慢,网页外包接活要进行一系列的验证web前端制作,这样才体现出ssh的安全.我们要提高效率,div+css制作在最短的时间内完成.后来我发现了python里面的paramiko模块承接网页制作,username,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,username,timeout=5)
for m in cmd:
stdin, stderr = ssh.exec_command(m)
# stdin.write("Y") #简单交互承接网页制作,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal',254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,username,cmd))
a.start()

上面的程序还是有些技巧的:
1.利用多线程web前端制作,同时发出登录请求,web前端制作同时去连接电脑承接网页制作,这样速度快很多,承接网页制作我试了一下web切图报价,如果不用多线程,网站div+css直接一个一个挨着执行的话符合w3c标准,大约5~10秒钟才能对一台电脑操作完,符合w3c标准具体时间要根据命令的来决定网页外包接活,如果是软件安装或者卸载时间要更长一些.这样下来怎么也要一二十分钟,网页外包接活用多线程后就快多了web前端制作,所有的命令执行完用了不到2分钟!
2.最好用root用户登录,div+css制作因为安装或者卸载软件的时候如果用普通用户又会提示输入密码承接网页制作,这样又多了一次交互,承接网页制作处理起来就比较麻烦!安装软件时apt-get install xxx 最好加上“-y”参数web切图报价,因为有时安装或删除软件时提示是否继续安装或卸载,手机html制作这又是一次自动交互!加上那个参数后就没有人机交互了.
3. 循环时循环所有ip,因为计算机的ip是路由器自动分配的,html切图制作保险起见网页外包接活,最好全部都执行,网页外包接活保证没有遗漏的主机
4.远端执行命令时如果有交互web前端制作,可以这样用 stdin.write("Y")来完成交互,web前端制作“Y”就是输入“Y”.
5.把所有的命令放到一个列表里面承接网页制作,遍历列表可以依次执行列表里面的命令
6.为了更好的进行控制,div前端切图最好在电脑上提前把root用户打开web切图报价,装好ssh服务器并让其开机自动执行.

作者:cnblogs ma6174
点击次数:2766
作者:

其它web前端开发资讯

ChiselTutorial(五)——Bundles与Vecs 【移动开发】2018年01月19日发牌程序(三)【编程语言】2018年01月19日TypeError:'stepUp'calledonanobjectthatdoesnotimplementinterfaceHTMLInputElement. 【架构设计】2018年01月19日HDU3605Escape(多重匹配之多对多的匹配) 【移动开发】2018年01月19日【独立开发者erCocos2d-x实战012】Cocos2dx2.2.6CCTableView和CCTableViewCell详解 【编程语言】2018年01月19日安卓音频简析2018年01月19日Java的内存区域 【Web前端】2018年01月19日浪漫QQ情侣网名虽然你还握着我的手2018年01月19日MTU最大传输单位 【编程语言】2018年01月19日后缀数组(一) 【互联网】2018年01月19日微博联合360、UC启动自媒体平台2018年01月19日点击listView的具体内容,进入其他activity中2018年01月19日面试题目-1【编程语言】2018年01月19日web报表工具finereport常用函数的用法总结(数组函数) 【移动开发】2018年01月19日“夺命锁”木马再出招专盯种子类搜索应用2018年01月19日你有删过最爱的人的QQ吗?2018年01月19日
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日cortex_m3_stm32嵌入式学习笔记(七):独立看门狗&窗口看门狗【架构设计】2015年01月24日一些有关检查数据的JS代码2014年01月29日poj1548Robotsdfs做法【互联网】2015年03月19日IIS7ASP+Access使用环境配置2014年01月30日定义字符串的两种方式【编程语言】2015年08月15日神经网络学习(一) 【移动开发】2015年03月13日SpringMVC3.2将支持Servlet3异步请求 1,收藏 ,,2016年06月23日Extjs学习笔记之五一个小细节renderTo和applyTo的区别2014年01月29日html5之indexdb(nosql存储) 【Web前端】2015年07月28日JavaScript特殊字符2014年01月28日【DP|数学+预处理】POJ-1160PostOffice【编程语言】2015年03月24日FirefoxOS原型机曝光 ,,2016年06月23日微软现使用Git和GVFS来开发Windows ,,2017年06月01日Mysqlloaddata命令解析、处理error29(ErrCode:13)错误(在ubuntu环境下) 【互联网】2015年06月18日基于mysql的bbs设计(一)2014年01月29日poj1789最小生成树kruskal实现【移动开发】2015年04月13日Git命令 【综合】2014年11月10日如何使用Javah生成CC++头文件的误区找不到‘XX.XXXX.XX.CLASSNAME’的类文件 【编程语言】2014年12月01日LeetCode:BinaryTreePaths【编程语言】2015年08月27日HDU3861(强连通缩点+二分匹配最小路径覆盖) 【移动开发】2015年08月27日自定义带滑动属性的Switch【移动开发】2015年01月09日算法题:求一个数在数组中出现的位置2015年08月03日Java消息和协作平台,BlueMind1.0Beta7发布 ,,2016年06月23日快逸报表常见问题整理-java报表 【移动开发】2015年04月13日模板引擎正则表达式调试小技巧2014年01月29日网站首页设计的可用性和PET,设计首页的可用性2014年01月28日66多个开源JavaScript游戏引擎 2,收藏 ,,2016年06月29日Genymotion+VitualBox安装问题解决(个人版+不断总结更新)【编程语言】2015年04月27日php获取301跳转URL简单实例2014年01月29日装饰器模式(DecoratorPattern) 【综合】2015年04月17日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)