python paramiko和logging的小例子

这篇博客介绍了如何在Python中结合Paramiko库进行SSH连接操作,并利用Logging模块进行日志记录,提供了详细的示例代码,帮助读者理解这两者在实际项目中的应用。

logging:

import logging

class Log(object):
    """personal log module for study"""

    def __init__(self, path, clevel=logging.DEBUG, flevel=logging.DEBUG):
        self.logger = logging.getLogger(path)
        self.logger.setLevel(logging.DEBUG)
        fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s ', '%Y-%m-%d %H:%M:%S')
        sh = logging.StreamHandler()
        sh.setFormatter(fmt)
        sh.setLevel(clevel)

        fh = logging.FileHandler(path)
        fh.setLevel(flevel)
        fh.setFormatter(fmt)
        self.logger.addHandler(sh)
        self.logger.addHandler(fh)

    def debug(self, msg):
        self.logger.debug(msg)

    def info(self, msg):
        self.logger.info(msg)

        def warn(self, msg):
        self.logger.warning(msg)

    def err(self, msg):
        self.logger.error(msg)

    def crit(self, msg):
        self.logger.critical(msg)

def main():
    log = Log('tst.log', logging.DEBUG, logging.DEBUG)
    log.debug('this is debug msg')
    log.info('this is msg of info')
    log.err('this is msg of error')
    log.warn('this is msg of warning')
    log.crit('this is msg of critical!!!')

if __name__ == '__main__':
    main()

paramiko:

# coding = utf-8

import paramiko
import logging
import logtry

class SSHhandle(object):

    def __init__(self, host, port=22, username='root', password='password'):
        self.host = host
        self.port = port
        self.username = username
        self.password = password

    def connect(self):
        transport = paramiko.Transport(self.host, self.port)
        transport.connect(username=self.username, password=self.password)
        self.__transport = transport

    def close(self):
        self.__transport.close()

    def exc_cmd(self, cmd):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh._transport = self.__transport  # 巧妙的使用了ssh的私有属性
        stdin, stdout, stderr = ssh.exec_command(cmd)
        print('the excute cmd is: %s' %cmd)

        return stdout.read()

    def sftp_put(self, localpath, remotepath):
        sftp = paramiko.SFTPClient.from_transport(self.__transport)
        sftp.put(localpath, remotepath)

 def main():
    sh = SSHhandle('192.168.100.217')
    sh.connect()
    log = logtry.Log('tst.log', logging.DEBUG, logging.DEBUG)
    ret = sh.exc_cmd('ls -l /opt',)
    log.info('The cmd excute result is :%s' % ret)
    sh.sftp_put('test.txt', '/opt/text')
    sh.close()

if __name__ == '__main__':
    main()
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值