局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的。现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。
或许你会想到网络同传, 网络同传是什么?就是在一台电脑上把电脑装好,配置好,然后利用某些软件,如“联想网络同传”把系统原样拷贝过去,在装系统时很有用,只要在一台电脑上装好,同传以后所有的电脑都装好操作系统了,很方便。同传要求所有电脑硬件完全相同,在联想的电脑上装的系统传到方正电脑上肯定会出问题的。传系统也是很费时间的,根据硬盘大小,如果30G硬盘,100多台电脑大约要传2个多小时,反正比一台一台地安装快!但是如果系统都传完了,发现忘了装一个软件,或者还需要做些小修改,再同传一次可以,但是太慢,传两次半天时间就没了。这时候我们可以利用ssh去控制每台电脑去执行某些命令。
先让我们回忆一下ssh远程登录的过程:首先执行命令 ssh username@192.168.1.x ,第一次登录的时候系统会提示我们是否要继续连接,我们要输入“yes”,然后等一段时间后系统提示我们输入密码,正确地输入密码之后我们就能登录到远程计算机,然后我们就能执行命令了。我们注意到这里面有两次人机交互,一次是输入‘yes',另一次是输入密码。就是因为有两次交互我们不能简单的用某些命令去完成我们的任务。我们可以考虑把人机交互变成自动交互,python的pexpect模块可以帮我们实现自动交互。下面这段代码是用pexpect实现自动交互登录并执行命令的函数:
复制代码 代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', '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模块我们可以做很多事情,由于他提供了自动交互功能,因此我们可以实现ftp,telnet,ssh,scp等的自动登录,还是比较实用的。根据上面的代码相信读者已经知道怎么实现了(python就是那么简单!)。
用上面的代码去完成任务还是比较费时间的,因为程序要等待自动交互出现,另外ubuntu用ssh连接就是比较慢,要进行一系列的验证,这样才体现出ssh的安全。我们要提高效率,在最短的时间内完成。后来我发现了python里面的paramiko模块,用这个实现ssh登录更加简单。看下面的代码:
复制代码 代码如下:
#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y") #简单交互,输入 ‘Y'
out = stdout.readlines()
#屏幕输出
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal','echo hello!']#你要执行的命令列表
username = "" #用户名
passwd = "" #密码
threads = [] #多线程
print "Begin......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()
上面的程序还是有些技巧的:
1.利用多线程,同时发出登录请求,同时去连接电脑,这样速度快很多,我试了一下,如果不用多线程,直接一个一个挨着执行的话,大约5~10秒钟才能对一台电脑操作完,具体时间要根据命令的来决定,如果是软件安装或者卸载时间要更长一些。这样下来怎么也要一二十分钟,用多线程后就快多了,所有的命令执行完用了不到2分钟!
2.最好用root用户登录,因为安装或者卸载软件的时候如果用普通用户又会提示输入密码,这样又多了一次交互,处理起来就比较麻烦!安装软件时apt-get install xxx 最好加上“-y”参数,因为有时安装或删除软件时提示是否继续安装或卸载,这又是一次自动交互!加上那个参数后就没有人机交互了。
3. 循环时循环所有ip,因为计算机的ip是路由器自动分配的,保险起见,最好全部都执行,保证没有遗漏的主机
4.远端执行命令时如果有交互,可以这样用 stdin.write("Y")来完成交互,“Y”就是输入“Y”。
5.把所有的命令放到一个列表里面,遍历列表可以依次执行列表里面的命令
6.为了更好的进行控制,最好在电脑上提前把root用户打开,装好ssh服务器并让其开机自动执行。
作者:cnblogs ma6174
相关推荐:
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
seo网站页面优化包括什么,seo页面优化技术 ,no ai写作
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
文章AI思维导图自动生成助力创作的智慧之源
ChatGPT为什么网址打不开?原因分析与解决方法,文档审核ai
ChatGPT服务器坏了?了解背后的技术与应对策略,AI模块代表
ChatGPT崩一次多久修复?揭秘背后的技术与保障,ai1818818
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
seo进阶买什么书运营,seo入门难吗 ,没有ai软件怎么打开ai图片
SEO自己:打造属于你的数字营销利器,微信裂变营销推广软件
GPT版本全解:从基础到高级,如何选择最适合你的方案?,韩国ai人工智能
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
SEO占位:如何在竞争激烈的市场中占得先机?,梁平区省心全网营销推广
seo监控什么意思,seo数据监控 ,ai panda眼镜架
AI免费工具:提升效率与创意的秘密武器
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
SEO开发:数字营销的核心驱动力,园区网站建设
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
Bing学术搜索结果不显示时间?如何解决这一问题,提升学术研究效率!,ai怎么参考线
“爱站”:开启网站优化与流量增长的新纪元,seo入门ppt
优化公司:助力企业腾飞的秘密武器,微信营销推广价格多少
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
ChatGPT破解:人工智能的无限潜力与破解秘笈,意识变ai
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
SEO留痕:数字营销的隐性力量,如何通过SEO优化让品牌更具竞争力,铁岭网站关键词建设优化
seo要会些什么,seo需要学些什么内容 ,轻盈ai
pbootcms前端翻译插件-轻松实现网站多语言支持,拓展全球市场,st ai绘画
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
SEO建站,开启网站优化的全新篇章!,网络营销推广合作方式
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
优排软件:高效管理新天地,轻松提升工作效率,长葛外贸网站建设
AI人工智能:开发与应用的必备软件推荐
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
OpenAI银联支付-未来支付新体验,安全便捷全新升级,医学加ai
ChatGPT错误处理与异常情况解决方法:让你的AI助手更加智能与可靠,智能ai鼠标ai智能语音
SEO中权重是什么意思?让你迅速网站排名的核心秘密!,长颈鹿智能AI点读机
seo要学会什么,seo要学多长时间 ,NTU AI 录取
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
seo网站编辑是做什么,seo网站编辑可在家兼职 ,ai慢直播
SEO获客的秘诀:如何通过搜索引擎优化提升客户获取能力,厦门seo搜索优化排名
ChatGPT破解:人工智能未来的无限可能,污污AI解说