python下paramiko模块学习之二:利用配置文件登录批量主机

简介:

  之前我写过一篇关于python中paramiko模块简单功能的文章,今天继续给大家介绍这个模块的一些用法。

     今天主要是利用python读取配置文件来登录批量主机,并在主机上执行shell命令,废话不说了,直接上代码了,大家可以看看:

 
  1. #!/usr/bin/env python 
  2. import paramiko 
  3. import os 
  4. import datetime 
  5. from ConfigParser import ConfigParser 
  6. ConfigFile='config.ini' 
  7. config=ConfigParser() 
  8. config.read(ConfigFile) 
  9. hostname1=''.join(config.get('IP','ipaddress')) 
  10. address=hostname1.split(';'
  11. print address 
  12. username='root' 
  13. password='abc123' 
  14. port=22 
  15. local_dir='/tmp/' 
  16. remote_dir='/tmp/test/' 
  17. if __name__=="__main__"
  18.         for ip in address: 
  19.                 paramiko.util.log_to_file('paramiko.log'
  20.                 s=paramiko.SSHClient() 
  21.                 s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
  22.                 s.connect(hostname=ip,username=username,password=password) 
  23.                 stdin,stdout,stderr=s.exec_command('free;ifconfig;df -h'
  24.                 print stdout.read() 
  25.                 s.close() 

下面再贴上config.ini配置文件内容:

 
  1. [IP] 
  2.  

 
  1. ipaddress = 74.63.229.*;69.50.220.* 
 
  1.  

下面给大家看下效果:

 

 
  1. [root@centos6 python]# clear 
  2. [root@centos6 python]# python paramiko-config.py 
  3. ['74.63.229.*''69.50.220.*'
  4.              total       used       free     shared    buffers     cached 
  5. Mem:        393216      22308     370908          0          0          0 
  6. -/+ buffers/cache:      22308     370908 
  7. Swap:            0          0          0 
  8. lo        Link encap:Local Loopback 
  9.           inet addr:127.0.0.1  Mask:255.0.0.0 
  10.           inet6 addr: ::1/128 Scope:Host 
  11.           UP LOOPBACK RUNNING  MTU:16436  Metric:1 
  12.           RX packets:14 errors:0 dropped:0 overruns:0 frame:0 
  13.           TX packets:14 errors:0 dropped:0 overruns:0 carrier:0 
  14.           collisions:0 txqueuelen:0 
  15.           RX bytes:956 (956.0 B)  TX bytes:956 (956.0 B) 
  16.  
  17. venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
  18.           UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1 
  19.           RX packets:36498 errors:0 dropped:0 overruns:0 frame:0 
  20.           TX packets:36433 errors:0 dropped:0 overruns:0 carrier:0 
  21.           collisions:0 txqueuelen:0 
  22.           RX bytes:8698019 (8.2 MiB)  TX bytes:5322427 (5.0 MiB) 
  23.  
  24. venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
  25.           inet addr:74.63.229.*  P-t-P:74.63.229.56  Bcast:0.0.0.0  Mask:255.255.255.255 
  26.           UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1 
  27.  
  28. Filesystem            Size  Used Avail Use% Mounted on 
  29. /dev/simfs             10G  408M  9.7G   4% / 
  30. tmpfs                 192M     0  192M   0% /lib/init/rw 
  31. tmpfs                 192M     0  192M   0% /dev/shm 
  32.  
  33.              total       used       free     shared    buffers     cached 
  34. Mem:        262144     154120     108024          0      50948      62668 
  35. -/+ buffers/cache:      40504     221640 
  36. Swap:       262136          0     262136 
  37. eth0      Link encap:Ethernet  HWaddr 00:16:3E:27:61:01 
  38.           inet addr:69.50.220.*  Bcast:69.50.223.255  Mask:255.255.240.0 
  39.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
  40.           RX packets:43755717 errors:0 dropped:0 overruns:0 frame:0 
  41.           TX packets:79002 errors:0 dropped:0 overruns:0 carrier:0 
  42.           collisions:0 txqueuelen:1000 
  43.           RX bytes:3003027220 (2.7 GiB)  TX bytes:39705224 (37.8 MiB) 
  44.  
  45. lo        Link encap:Local Loopback 
  46.           inet addr:127.0.0.1  Mask:255.0.0.0 
  47.           UP LOOPBACK RUNNING  MTU:16436  Metric:1 
  48.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
  49.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
  50.           collisions:0 txqueuelen:0 
  51.           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b) 
  52.  
  53. Filesystem            Size  Used Avail Use% Mounted on 
  54. /dev/sda1              15G  4.7G  9.4G  33% / 
  55. none                  128M     0  128M   0% /dev/shm 
  56.  
  57. [root@centos6 python]# 

   呵呵,代码十分简单,我在linux虚拟机下执行没有问题,上面的2个实体ip是我的2个VPS,登录和执行都很快,但是在window下却报错,比较困惑,也没有深究,希望有知道的同仁指点下。

    这个例子这个例子十分简单,大家可以扩张下,在运维工作中,我们管理的机器可不止2台吧,你就可以你管理的服务器IP都写在配置文件里,中间又分号隔开就可以了,还有一点就是你可能执行的命令也有很多,其实也可以写在配置文件里,而不必像我这样写死在代码里面,其他扩展功能大家可以自己去看看

本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/706999如需转载请自行联系原作者


world77

相关文章
|
4天前
|
机器学习/深度学习 分布式计算 物联网
【Python机器学习专栏】联邦学习:保护隐私的机器学习新趋势
【4月更文挑战第30天】联邦学习是保障数据隐私的分布式机器学习方法,允许设备在本地训练数据并仅共享模型,保护用户隐私。其优势包括数据隐私、分布式计算和模型泛化。应用于医疗、金融和物联网等领域,未来将发展更高效的数据隐私保护、提升可解释性和可靠性的,并与其他技术融合,为机器学习带来新机遇。
|
4天前
|
机器学习/深度学习 自然语言处理 搜索推荐
【Python机器学习专栏】迁移学习在机器学习中的应用
【4月更文挑战第30天】迁移学习是利用已有知识解决新问题的机器学习方法,尤其在数据稀缺或资源有限时展现优势。本文介绍了迁移学习的基本概念,包括源域和目标域,并探讨了其在图像识别、自然语言处理和推荐系统的应用。在Python中,可使用Keras或TensorFlow实现迁移学习,如示例所示,通过预训练的VGG16模型进行图像识别。迁移学习提高了学习效率和性能,随着技术发展,其应用前景广阔。
|
4天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习中的Bagging与Boosting
【4月更文挑战第30天】本文介绍了集成学习中的两种主要策略:Bagging和Boosting。Bagging通过自助采样构建多个基学习器并以投票或平均法集成,降低模型方差,增强稳定性。在Python中可使用`BaggingClassifier`实现。而Boosting是串行学习,不断调整基学习器权重以优化拟合,适合弱学习器。Python中可利用`AdaBoostClassifier`等实现。示例代码展示了如何在实践中运用这两种方法。
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
4天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
5天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{"name": "John", "age": 30, "city": "New York"}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
11 1
|
6天前
|
Python 容器
python内置函数、数学模块、随机模块(二)
python内置函数、数学模块、随机模块(二)
|
6天前
|
索引 Python
python内置函数、数学模块、随机模块(一)
python内置函数、数学模块、随机模块(一)
|
7天前
|
Python
【Python21天学习挑战赛】- 错误和异常
【Python21天学习挑战赛】- 错误和异常
|
7天前
|
容器
【Python21天学习挑战赛】-迭代器 & f-格式化 & 模块
【Python21天学习挑战赛】-迭代器 & f-格式化 & 模块