python下paramiko模块学习之二:利用配置文件登录批量主机
2012-06-14 13:53
801 查看
之前我写过一篇关于python中paramiko模块简单功能的文章,今天继续给大家介绍这个模块的一些用法。今天主要是利用python读取配置文件来登录批量主机,并在主机上执行shell命令,废话不说了,直接上代码了,大家可以看看:
#!/usr/bin/env python import paramiko import os import datetime from ConfigParser import ConfigParser ConfigFile='config.ini' config=ConfigParser() config.read(ConfigFile) hostname1=''.join(config.get('IP','ipaddress')) address=hostname1.split(';') print address username='root' password='abc123' port=22 local_dir='/tmp/' remote_dir='/tmp/test/' if __name__=="__main__": for ip in address: paramiko.util.log_to_file('paramiko.log') s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname=ip,username=username,password=password) stdin,stdout,stderr=s.exec_command('free;ifconfig;df -h') print stdout.read() s.close()下面再贴上config.ini配置文件内容:
[IP]
ipaddress = 74.63.229.*;69.50.220.*下面给大家看下效果:
[root@centos6 python]# clear[root@centos6 python]# python paramiko-config.py['74.63.229.*', '69.50.220.*']total used free shared buffers cachedMem: 393216 22308 370908 0 0 0-/+ buffers/cache: 22308 370908Swap: 0 0 0lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:14 errors:0 dropped:0 overruns:0 frame:0TX packets:14 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:956 (956.0 B) TX bytes:956 (956.0 B)venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1RX packets:36498 errors:0 dropped:0 overruns:0 frame:0TX packets:36433 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:8698019 (8.2 MiB) TX bytes:5322427 (5.0 MiB)venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:74.63.229.* P-t-P:74.63.229.56 Bcast:0.0.0.0 Mask:255.255.255.255UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1Filesystem Size Used Avail Use% Mounted on/dev/simfs 10G 408M 9.7G 4% /tmpfs 192M 0 192M 0% /lib/init/rwtmpfs 192M 0 192M 0% /dev/shmtotal used free shared buffers cachedMem: 262144 154120 108024 0 50948 62668-/+ buffers/cache: 40504 221640Swap: 262136 0 262136eth0 Link encap:Ethernet HWaddr 00:16:3E:27:61:01inet addr:69.50.220.* Bcast:69.50.223.255 Mask:255.255.240.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:43755717 errors:0 dropped:0 overruns:0 frame:0TX packets:79002 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:3003027220 (2.7 GiB) TX bytes:39705224 (37.8 MiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Filesystem Size Used Avail Use% Mounted on/dev/sda1 15G 4.7G 9.4G 33% /none 128M 0 128M 0% /dev/shm[root@centos6 python]#呵呵,代码十分简单,我在linux虚拟机下执行没有问题,上面的2个实体ip是我的2个VPS,登录和执行都很快,但是在window下却报错,比较困惑,也没有深究,希望有知道的同仁指点下。这个例子这个例子十分简单,大家可以扩张下,在运维工作中,我们管理的机器可不止2台吧,你就可以你管理的服务器IP都写在配置文件里,中间又分号隔开就可以了,还有一点就是你可能执行的命令也有很多,其实也可以写在配置文件里,而不必像我这样写死在代码里面,其他扩展功能大家可以自己去看看转载文章来自:/article/4282326.html
相关文章推荐
- python下paramiko模块学习之二:利用配置文件登录批量主机
- python下paramiko模块学习之五:批量主机上传文件
- python下paramiko模块学习之四:从远程主机批量下载文件到本机
- python下paramiko模块学习之三:上传批量文件到远程主机
- python下paramiko模块学习之五:批量主机上传文件
- python下paramiko模块学习之三:上传批量文件到远程主机
- python下paramiko模块学习之四:从远程主机批量下载文件到本机
- Python+paramiko基于配置文件的批量主机管理
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python下paramiko模块学习之一:ssh登录和执行命令
- Python学习之读取配置文件模块ConfigParser详解
- 用Python多线程和paramiko给主机组批量分发命令和传送文件
- python中利用ConfigParser模块读取配置文件
- Python 学习日知录(五)- 配置文件之二
- python下paramiko模块学习之一:ssh登录和执行命令
- 利用python 下paramiko模块无密码登录
- 用Python多进程和paramiko给主机组批量分发命令和传送文件
- python模块学习之paramiko远程执行命令,文件上传、下载
- 利用python的paramiko模块ssh登录本地虚拟机并执行任意命令
- python模块学习之paramiko远程执行命令,文件上传、下载