您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: