如何使用python发送nc相似命令?

2024-09-29 08:15:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将参数foo及其值发送到statsD 使用python(python-2.7)程序。当从nettsi命令中获取数据包时,使用nettsi命令从下面的命令发送数据包foo:150哪个是正确的。 echo "foo:150|c" | nc -u -w0 127.0.0.1 8125

然而,当我通过Python程序发送foo:150时,statsD得到的是{}的大随机值,而不是{}。Python程序和statsD接收值输出如下。知道python程序中导致statsD接收随机值的错误是什么,但在通过nc(netcat)命令发送时却能正常工作吗?在

PYTHON程序:

import socket
import random
UDP_IP = "127.0.0.1"
UDP_PORT = 8125
while(True):

        MESSAGE = "foo:150|c"       
        #print "message:", MESSAGE

        sock = socket.socket(socket.AF_INET, # Internet
                             socket.SOCK_DGRAM) # UDP
        sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

StatsD接收值:

^{pr2}$

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Tags: import命令程序ipmessage参数fooport
1条回答
网友
1楼 · 发布于 2024-09-29 08:15:09

我找到了答案。似乎当我把发送值从计数器改为as gauges时,我得到的值是正确的。所以,我认为问题不在我的python程序中,而是statsD中的一些逻辑在作为计数器的一部分传递时给了我foo意外的随机值。在

简而言之,当我从MESSAGE = "foo:150|c"更改为MESSAGE = "foo:150|g"时,我开始为foo获得正确的值。输出如下:

{ counters:
   { 'statsd.bad_lines_seen': 0,
     'statsd.packets_received': 150383,
     'statsd.metrics_received': 150383 },
  timers: {},
  gauges: { foo: 150, 'statsd.timestamp_lag': 0 },
  timer_data: {},
  counter_rates:
   { 'statsd.bad_lines_seen': 0,
     'statsd.packets_received': 150383,
     'statsd.metrics_received': 150383 },
  sets: {},

相关问题 更多 >