参考
http://wangwei007.blog.51cto.com/blog/68019/1058726
http://youzao.blog.51cto.com/3946111/1348903
在node1上想对node2执行命令,标准的答案
1.比较直观
#!/usr/bin/env python
import paramiko
hostname=‘192.168.0.102‘
username=‘root‘
password=‘abc‘
port=22
paramiko.util.log_to_file(‘paramiko.log‘)
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname = hostname,port=port,username=username, password=password)
stdin,stdout,stderr=s.exec_command(‘free;df -h‘)
print stdout.read()
2.类的形式
#!/usr/bin/python
# coding=utf8
import paramiko,datetime,os,threading
#class run_cmd(threading.Thread):
class run_cmd():
def __init__(self,hostname=None,password=None,username=None,port=None,echo_cmd=None):
#threading.Thread.__init__(self)
self.hostname=hostname
self.password=password
self.username=username
self.port=port
self.echo_cmd=echo_cmd
#self.thread_stop=False
def run(self):
paramiko.util.log_to_file(‘paramiko.log‘)
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname = self.hostname,username=self.username, password=self.password)
stdin,stdout,stderr=s.exec_command(self.echo_cmd)
return stdout.read()
s.close()
def stop(self):
self.thread_stop=True
if __name__==‘__main__‘:
f = file(‘/home/python/filelist1‘,‘r‘)
port=22
c = f.readlines()
for x in c:
hostname = x.split(‘::‘)[0]
password = x.split(‘::‘)[1]
username = x.split(‘::‘)[2]
remote = x.split(‘::‘)[4].strip(‘\n‘)
echo_cmd=‘/bin/find %s -maxdepth 1 -type d -mmin -1200‘ %(remote)
#echo_cmd=‘free;df -h‘
cmd_thread=run_cmd(hostname,password,username,port,echo_cmd)
result=cmd_thread.run()
print result
f.close()
如果运行有错误,请参考python 增量同步远程文件夹