`
darren_nizna
  • 浏览: 71415 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

linux下读取日志文件上传到服务器

阅读更多

日志文件会不断的增加,这个程序能上传这不断增加的日志文件到服务器,以便服务器分析。

#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/sendfile.h>

#define SA struct sockaddr

/**
 *  如果出现错误,程序返回 0, 错误信息保存在 error 数组中
 *  server       服务端的 IP, 字符串表示 如 “192.168.1.1”
 *  port         连接服务端的端口,一个 16 位整数
 *  logFilePath  客户端日志文件的位置
 *  error        程序出错将错误信息返回在这个数组中
 */
int transportLogFileToServer( char* server,   int port,  char* logFilePath, char error[100] ){
    int 		         info;      /* 临时变量  */
    int 			 sockfd;    /* socket 描述符 */
    struct sockaddr_in           servaddr;  /* 套接字  */

    /* 初始化错误信息 */
    strcpy( error, "Everything is ok!!" );

    /* 获得 socket 描述符 */
    sockfd= socket( AF_INET, SOCK_STREAM, 0 );
    if( sockfd== -1 ){
        strcpy( error, "Get socket descriptor error, connect again!" );
        return 0;
    }

    /* 初始化 socket 为零 */
    bzero( &servaddr, sizeof(servaddr) );
    /* 设置协议 */
    servaddr.sin_family = AF_INET;
    /* 设置端口 */
    servaddr.sin_port =  htons( port );

    /* 设置服务端 IP */
    info= inet_pton( AF_INET,  server, &servaddr.sin_addr );
    if( info== -1 ){
        strcpy( error, "The ip address format is error!");
        return 0;
    }

    /* 连接服务端 */
    info= connect( sockfd, (SA*)&servaddr, sizeof(servaddr) ) ;
    if( info== -1 ){
        strcpy( error, "Connect server error, check the server address or port!");
        return 0;
    }

    /* 打开日志文件 */
    FILE* file= fopen( logFilePath, "r");

    if( file== NULL ){
        strcpy( error, "Can't open the log file, please check the path or if you have the right to read!");
        return 0;
    }
    /* 获得日志文件的文件描述符 */
    int fd= fileno( file );

    /* 文件指针指向文件末尾,便于得到文件长度 */
    fseek( file, 0, SEEK_END );
    /* 初始化 pre 为文件长度 */
    long pre= ftell( file );
    long now= 0;

    while( 1 ){
        fseek( file, 0, SEEK_END );
        now= ftell( file );

	/* 如果 now> pre, 说明日志文件已经写入了数据 */
        if( pre== now ) continue;

	/* 将文件指针指向 pre 位置 */
        fseek( file, pre, SEEK_SET );

	/* 将 pre 到 now 这一段的数据发送 */
        sendfile( sockfd, fd, &pre, now- pre );

        pre= now;
    }

    return 1;
}

int main(){
    char error[1000];
    int t= transportLogFileToServer( "10.2.53.119",  4464, "./testFile.txt", error );

    if( t== 0 ){
        printf("%s\n",error );
    }
	return 0;
}
 
2
1
分享到:
评论

相关推荐

    SpringBoo+Vue构建日志文件查看系统(源代码)

    想必经常做java开发的小伙伴,其大多数服务都是运行在linux系统上的,当遇到一些比较棘手的bug需要处理时,经常要上服务器去捞日志,然后通过各种查询啥的去寻找有用的信息,这样不仅对服务器有一定的安全隐患,而且...

    loglemming:从浏览器查看linux日志文件

    需要Simpleloglist作为包装程序,以从Web服务器进程中读取和列出日志文件(希望它没有root权限,并且默认情况下无法读取所有日志文件) 我知道,使用sudo执行一些未知程序会使您不舒服。 因此,我建议阅读的来源...

    linux tail 查看日志文件方法

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 1.命令格式; ...

    DEST戴尔服务器硬件日志收集工具

    1.本工具为DELL服务器官方硬件日志提取工具,不是安装程序,请直接运行"dsetreport.hta"即可,运行时长...2.本程序可以在不关机的情况下完成服务器错误日志的收集; 3.本程序为Windows平台工具,Linux请下载Linux版本;

    大势至服务器共享文件访问记录软件 v3.1.zip

    总之,大势至共享文件审计系统是国内唯一可以有效监控共享文件的访问操作记录的软件,可以有效记录共享文件的读取、修改、删除、剪切、重命名等,有效保护服务器共享文件的安全,保护单位的商业机密和无形资产。

    filebeat-6.2.3-linux-x86_64.tar.gz

    Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。...

    基于python实现的linux后台日志监控小项目+源代码+文档说明

    设计需求:一到周末,公司总是会让我们人肉监控服务器状态(因为技术还没到互联网层公司的技术,没有自动化---例如工具Ansible之类的,ε=(´ο`*)))唉) 所以,我觉得这种东西如果可以实现一个远程自动化的监控工具是...

    linux数据库主从复制

    1、从库上面启动一个I/O线程,(5.5以后多线程)连接到主服务器上面请求读取二进制(Bin-log)日志文件 2、把读取到的二进制日志写到本地的Realy-log(中继日志)里面 3、从服务器上面同时开启一个SQL线程,读取...

    php大文件上传示例代码-mysql-utf8

    将不必再对文件执行I/O操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文件缓存操作均由系统直接管理,由于取消了将文件数据加载到内存、数据从内存到文件的回写以及释放内存块等步骤,使得...

    Linux FTP服务配置

    切换到目录"/var/ftp/pub",该目录的权限为777,上传一个10M以上的文件,测试ftp1的上传速度: 新建文件夹和删除权限测试省略。下面测试匿名用户权限:勾选"匿名"选项并连接: 匿名用户登陆成功: 进入pub目录,...

    linux大作业报告

    设计shell脚本程序,运行结果如下: 当用户输入相应的数字执行相应的功能。 2、设计shell脚本程序,在...客户端打开一个文件,把文件内容传送给服务器端,服务器端接受到文件内容后,保存在/tmp目录下。 ...... ......

    filebeat-5.6.8-linux-x86_64.tar

    Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件

    一个 nginx 日志浏览器

    Rhit在标准位置(甚至是 gzipped...基本用法如果 rhit 在服务器上,并且日志在它们通常的位置:rhit(您可能必须以 sudo 为前缀才能读取/var/log的文件)告诉 rhit 要打开哪些文件:rhit~ /trav/nginx-logs过滤过滤路径

    SecureParser:Linux安全日志文件解析器

    安全解析器 SecureParser用Java语言实现,并且将连续访问失败的人(黑名单)和成功访问的人(白名单)解析并存储在... 另外,在无条件DROP的情况下,也可以删除服务器的联系人用户,以便可以查看和删除白名单的IP。 需

    服务器一键启动脚本

    linux系统一键启动脚本,包含weblogic,tomcat,nginx,包含日志文件切割语句,一键读取系统日志等。此文件仅供参考,具体内容可自己改造。

    无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)

    今天帮客户配置服务器的时候运行phpmyadmin出现了“无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。”的错误,经排查原来是权限问题,大家可以参考下面的方法解决

    logging:Ansible角色,用于配置日志记录

    例如,日志记录系统可以从本地文件读取日志,或者从systemd / journal读取日志,或者通过网络从其他日志记录系统接收日志。 然后,日志可以存储在/ var / log目录中的本地文件中,或发送到Elasticsearch,或转发到...

    Linux服务器上的Tomcat进程频繁被杀

    Linux服务器上的Tomcat进程频繁被杀一....等待下一次的问题出现后,查看日志文件内容 vim /var/log/messages 摘取主要内容如下: Apr 15 23:09:41 water abrtd: Executable '/usr/java/jdk1.8.0_131/bin/java

    filebeat-6.1.1-linux-x86_64.tar.gz

    Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

Global site tag (gtag.js) - Google Analytics