Python 拉取日志文件paramiko

paramiko的另一篇博文:http://467754239.blog.51cto.com/4878013/1619166

场景:

在游戏行业的集群中,日志分析或许是必不可少的,那么为了更方便的管理日志,就是统一存放日志,然后入库数据库

#!/usr/bin/env python
#coding:utf8

from multiprocessing import Process
from datetime import *
import paramiko
import string
import sys
import os

Hostinfo = {
	"192.168.1.100" : {
				"s200" : "/home/platform/work/business/s200/deploy/container/statistics/log/",
			    	"s202": "/home/platform/work/business/s202/deploy/container/statistics/log/"
				},
	"192.168.1.102" : {
				"s201" : "/home/platform/work/business/s201/deploy/container/statistics/log/",
				"s203" : "/home/platform/work/business/s203/deploy/container/statistics/log/"
				},
	"192.168.1.103" :  {
				"s000" : "/root/project/business/deploy/container/statistics/log/",
			    	"s100" : "/home/platform/work/business/s100/deploy/container/statistics/log/",
				"s101" : "/home/platform/work/business/s101/deploy/container/statistics/log/"
				},
	"192.168.1.104" : {
				"s001" : "/home/game/business_test/deploy/container/statistics/log/"
			},

	}

def sftpGet(ip,subdir,logdir,remotefile):
    Username, Port, Password = ‘root‘, 22, ‘password‘
    cmd = ‘cd %s && rm -rf *.tar.gz && ls %s && [ $? -eq 0 ] && tar zcf %s.tar.gz %s || exit 1‘ % (logdir, remotefile, remotefile, remotefile)

    s = paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname=ip, port=Port, username=Username, password=Password)
    s.exec_command(cmd)
    
    s = paramiko.Transport((ip,Port))
    s.connect(username=Username,password=Password)
    sftp = paramiko.SFTPClient.from_transport(s)

    formatfile = string.join([ip,subdir,remotefile],sep="_")
    localfile = formatfile + ‘.tar.gz‘

    localDir = os.path.abspath(os.path.join(os.path.dirname(__file__), "collect"))
    if not os.path.exists(localDir):
        os.makedirs(localDir)
   
    local_abspath_file = os.path.join(localDir,localfile)
    try:
	remote_tarfile = remotefile + ‘.tar.gz‘
        remote_abspath_file = os.path.join(logdir,remote_tarfile)
        sftp.get(remote_abspath_file,local_abspath_file)
        s.close()
    except:
	print ‘‘, 
    

def ipProcess():
    yesterday = datetime.now() + timedelta(days=-1)
    now = yesterday.strftime("%Y%m%d")
    remotefile = string.join(["action",now,"log"],sep=".")

    for key, value in Hostinfo.items():
	ip = key
	for subdir, logdir in value.items():
	    sftpGet(ip,subdir,logdir,remotefile)
            #p = Process(target=sftpGet,args=(ip,subdir,logdir,remotefile))
	    #p.start()
	    #p.join()

if __name__ == "__main__":
    ipProcess()
时间: 2024-12-20 01:24:18

Python 拉取日志文件paramiko的相关文章

PostgreSQL构建流复制拉取日志的起始位置在哪里

WaitForWALToBecomeAvailable: if (!InArchiveRecovery) currentSource = XLOG_FROM_PG_WAL; else if (currentSource == 0) currentSource = XLOG_FROM_ARCHIVE; for (;;){ int oldSource = currentSource; if (lastSourceFailed){ switch (currentSource){ case XLOG_F

python 拉取rds 审计日志

此脚本可以拉取rds 审计日志 并且插入本地数据中. #!/usr/bin/env  python2.6 #coding=utf-8 import os from aliyunsdkcore import client from aliyunsdkrds.request.v20140815 import DescribeSQLLogRecordsRequest import json import urllib import datetime,time import subprocess fro

RocketMQ 拉取消息-文件获取

看完了上一篇的<RocketMQ 拉取消息-通信模块>,请求进入PullMessageProcessor中,接着 PullMessageProcessor.processRequest(final ChannelHandlerContext ctx, RemotingCommand request)方法中调用了: final GetMessageResult getMessageResult = this.brokerController.getMessageStore().getMessag

python 实时遍历日志文件

open 遍历一个大日志文件 使用 readlines() 还是 readline() ? 总体上 readlines() 不慢于python 一次次调用 readline(),因为前者的循环在C语言层面,而使用readline() 的循环是在Python语言层面. 但是 readlines() 会一次性把全部数据读到内存中,内存占用率会过高,readline() 每次只读一行,对于读取 大文件, 需要做出取舍. 如果不需要使用 seek() 定位偏移, for line in open('fi

【python学习】日志文件里IP访问最多的3个

日志文件例子: #111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.307

python自定义方法处理日志文件

从命令行界面拷贝的内容包含过个">>>",函数的作用是用正则把每两个">>>"之间的字符取出来,然后把包含"Traceback..."的字符的内容去掉,再写到另一个文件中 代码: #coding=utf-8import reimport osdef clearContent(fileName):    result=[]    with open(fileName) as fp:        content=

python抓取m3u8文件,并提取.ts文件合成视频

本节抓取手机app视频,charles抓包部分就不演示了,抓包内容如下: 可以直接抓取到.ts视频文件,但全都是视频片段,如果要抓全部的视频,就要找m3u8文件,里边有所有的视频路径,在拼接url前缀,就可以拿到正确的视频url了. 以下是代码部分: import requests import os,sys import re #读取m3u8文件并提取.ts文件路径 url="http://f1.thishs.com/578a7600fb83e8566227a90f3bd926b4/5E64C

Python抓取远程文件获取真实文件名

用urllib下载远程文件并转存到hdfs服务器,在下载时,下载地址中不一定包含文件名,需要从连接信息中获取. 1 file_url = request.form.get('file_url') 2 fo = urllib.urlopen(file_url) 3 blob = fo.read() 4 file_size = len(blob) 5 if fo.info().has_key('Content-Disposition'): 6 file_name = fo.info()['Conte

rsync拉取远程文件

mkdir -p   /docsshpass -p ''pwd" rsync -avz -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' --bwlimit=500 [email protected]_ip:/data/file   /doc