2015-11-06 28 views
0

我已经编写了Python脚本并作为服务运行,脚本本身检查网络流量并最终吐出打印语句。 我不知道如何才能在最后看到打印文本。它会显示在终端上?从服务在终端上打印文本

想法是,如果此脚本作为服务运行并且已登录,我想查看打印结果。

service.conf(修正运行级别,如果有什么不对的地方为好,我可以运行此为最后服务)

description "Network Check" 
author "I am the user" 

start on runlevel [234] 
stop on runlevel [0156] 

chdir /home/foo 
exec /home/foo/test.py 
respawn 

脚本:

#!/usr/bin/python 
import psutil 
import time 
final_bytes=0 
diff=0 
while ((final_bytes/1000000) < 500): 
    bytes = psutil.net_io_counters() 
    if (bytes.bytes_recv - diff) > 1000000: 
     time.sleep(1) 
     if final_bytes != 0: 
       final_bytes = final_bytes + (bytes.bytes_recv - diff) 
     else: 
       final_bytes =1 
    else: 
     time.sleep(0.5) 
    diff = bytes.bytes_recv 

print "Total Bytes transferred: ", final_bytes/1000000 ,"MB" 
+0

你有没有考虑过把内容输出到系统日志服务器或其他什么东西。这允许您根据需要在本地或远程日志记录服务器上进行日志记录。 Python日志工具能够将内容发送到UDP端口(514 for syslog) –

+0

@BrianCain我对Ubuntu/Linux和Python非常新颖,我为了学习的目的而编写了这个程序,而且我的设置是一个独立的服务器。你能再详细一点吗?看起来像Syslog是用于网络监控。 – Fenomatik

+0

@BrianCain我认为我得到了你在这里说的,我正在研究它,但最重要的是,我最初的想法是获得某种即时警报(也许闪烁的文字等)作为警报的一种形式。你认为这可以在终端上实现吗?我相信,如果没有用户登录,将不可能。但是如果我登录?我更像是一个SCOM家伙:) – Fenomatik

回答

0

一可能的选择是设置一个系统日志服务器(本地或远程)来记录你的输出。

import logging 
import logging.handlers 

# Set up the logging 
FORMAT = "[%(filename)s:%(lineno)s - %(funcName)20s ] %(message)s\n" 
logging.basicConfig(format=FORMAT) 
_LOG = logging.getLogger(__name__) 
_LOG.setLevel(logging.DEBUG) 
sysLogServer = "127.0.0.1" # This could be a remote server address also 
sysLogPort = 514 
sysLogHandle = logging.handlers.SysLogHandler(address=(sysLogServer, sysLogPort)) 
sysLogHandle.setFormatter(logging.Formatter(__name__ + ":" + FORMAT)) 
_LOG.addHandler(sysLogHandle) 

当你想生成您可以使用安装日志功能如下日志消息比:

_LOG.debug("Total Bytes Transfered...") 

这应当引起你的代码来生成UDP的Syslog报文。下一步将是建立一个本地系统日志监听器。例如,可以找到一个基本指南here

注意。上面的例子比格式化要复杂得多,这只是我用来在我的内容输出中包含函数名称的典型格式。

+0

我想我在这里得到你所说的,我正在研究它,但最重要的是,我最初的想法是获得某种即时警报(也许闪烁的文字等)作为警报的一种形式。你认为这可以在终端上实现吗?我相信,如果没有用户登录,将不可能。但是如果我登录? – Fenomatik