#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item   :  v1.0
@Author :  ShengWangQiang
@Group  :  System 
@Date   :  2015-01-28
@E-mail :  swq.499809608@hotmail.com
@Funtion:
         
"""

import sys,time,os,traceback,commands,
import paramiko,

class Remote(object):
    def __init__(self):
        version = 'v0.1'
        self.users = 'root'
        self.passwd  = "1234567890"
        self.port = 22
        

    def log(self,info):
        files = open('/tmp/deploy.log','a')
        try:
            files.write('[%s]: %s \n' %(time.ctime(),info))
        except IOError:
            files.close()
        files.close()


    def cmds(self,host,comm):
        try:
            print comm
            client = paramiko.Transport((host,int(self.port)))
            client.connect(username=self.users,password=self.passwd)
            chan = client.open_session()
            chan.exec_command(comm)
            chan.close()
        except:
            print 'host', host
            print traceback.format_exc()
            self.log(traceback.format_exc())

    def sftps(self,host,files):
        try:
            lodir = '/opt/onfile'
            rmdir = '/opt/onfile'
            client = paramiko.Transport((host,int(self.port)))
            client.connect(username=self.users,password=self.passwd)
            sftp = paramiko.SFTPClient.from_transport(client)
            sftp.put('%s/%s'%(lodir,files),'%s/%s'%(rmdir,files))
            client.close()
        except:
            print traceback.format_exc()
            self.log(traceback.format_exc())

    def work(self,comm):
        fp = open('/opt/online/ser_list.txt').readlines()
        for s in fp:
            host = s.strip()
            self.cmds(host,comm)
    def sftp(self,comm):
        fp = open('/opt/online/ser_list.txt').readlines()
        for s in fp:
            host = s.strip()
            self.sftps(host,files)

if __name__ == '__main__':
    sc = Remote()
    func =  sys.argv[1]
    files = sys.argv[2]
    if func == 'sftp':
        sc.sftp(files)
    elif func == 'work':
        sc.work(files)