python2.7 执行cmd命令及shell命令封装方法

'''
Created on 2014-11-6

@author: Administrator
'''
# -*- coding: utf-8 -*-
import xdrlib,sys,os
import xlrd
from socket import *
from time import ctime
import socket
import base64
import paramiko
import os

reload(sys)
sys.setdefaultencoding("utf-8")

def exec_win32cmd(commands=[]):
    ret=[]
    for cmd in commands:
        try:
            ret.append(os.popen(cmd.strip('\r').strip('\n')))
        except Exception as ex:
            ret.append("cmd %s error" %(cmd))
            continue
    return ret
        
def exec_cmd(ip="",port=22,user="root",pwd="",cmd=[]):
    if ip=="":
        print "dst host ip is None."
        sys.exit(0)
    try:  
        ssh = paramiko.SSHClient()  
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
        ssh.connect(ip,port,user,pwd,timeout=5)  
        for m in cmd:  
            stdin, stdout, stderr = ssh.exec_command(m)
            #stdin.write("Y") #input Y  
            out = stdout.readlines()  
            for o in out:  
                print o 
        print '%s\tOK\n'%(ip)  
        ssh.close()  
    except Exception as ex:  
        print 'Connect %s \tError.%s\n'%(ip,str(ex))
        
class SSHClient:
    def __init__(self,ip,port,user,pwd):
        if ip=="":
            print "dst host ip is None."
            sys.exit(0)
        print "initializing ssh_process..."
        self.ip=ip
        self.port=port
        self.user=user
        self.pwd=pwd

    def connect(self):
        client=None
        try:
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(self.ip,self.port,self.user,self.pwd,timeout=5)
        except Exception as ex:
            client.close()
            print "connect %s:%s with user %s failed. %s" %(self.ip,str(self.port),self.user,str(ex))
            
        self.client= client

    def ssh_cmd(self,cmds=[]):
        self.connect()
        for m in cmds:  
            stdin, stdout, stderr = self.client.exec_command(m)
            #stdin.write("Y")  
            out = stdout.readlines()  
            for o in out:  
                print o 
        print '%s\tOK\n'%(self.ip)  
        self.close()
        return out

    def close(self):
        try:
            self.client.close()
        except Exception as e:
            print "close ssh failed.%s" %(str(e))


调用方法:

    ssh=SSHClient("200.200.88.130",22345,"admin","1")
    ssh.ssh_cmd(["uname -a","date"])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值