2016-06-08 20:35:19 -05:00
|
|
|
#!/usr/bin/env python
|
2021-03-18 12:24:30 +01:00
|
|
|
import os
|
2016-06-08 20:35:19 -05:00
|
|
|
import socket
|
|
|
|
import sys
|
|
|
|
|
|
|
|
# Unix socket
|
2021-03-18 12:24:30 +01:00
|
|
|
server_address = "/var/run/rrdcached.sock"
|
2016-06-08 20:35:19 -05:00
|
|
|
|
|
|
|
# TCP socket
|
2021-03-18 12:24:30 +01:00
|
|
|
# server_address = 'localhost:42217'
|
2016-06-08 20:35:19 -05:00
|
|
|
|
|
|
|
sock = None
|
|
|
|
try:
|
|
|
|
if os.path.exists(server_address):
|
|
|
|
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
|
|
else:
|
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
2021-03-18 12:24:30 +01:00
|
|
|
if ":" in server_address:
|
|
|
|
split = server_address.rsplit(":", 1)
|
|
|
|
server_address = (split[0], int(split[1]))
|
2016-06-08 20:35:19 -05:00
|
|
|
else:
|
|
|
|
server_address = (server_address, 42217)
|
|
|
|
|
|
|
|
sock.connect(server_address)
|
|
|
|
except socket.error as e:
|
2021-03-18 12:24:30 +01:00
|
|
|
sys.stderr.write(str(e) + ": " + str(server_address) + "\n")
|
2016-06-08 20:35:19 -05:00
|
|
|
sys.exit(1)
|
|
|
|
|
2021-03-18 12:24:30 +01:00
|
|
|
buffer = ""
|
2016-06-08 20:35:19 -05:00
|
|
|
max = -1
|
|
|
|
try:
|
|
|
|
sock.settimeout(5)
|
2021-03-18 12:24:30 +01:00
|
|
|
sock.sendall("STATS\n".encode())
|
|
|
|
while max == -1 or len(buffer.split("\n")) < max:
|
2016-06-08 20:35:19 -05:00
|
|
|
buffer += sock.recv(1024).decode()
|
|
|
|
if max == -1:
|
|
|
|
# the first line contains the number of following lines
|
2021-03-18 12:24:30 +01:00
|
|
|
max = int(buffer.split(" ")[0]) + 1
|
2016-06-08 20:35:19 -05:00
|
|
|
except socket.error as e:
|
2021-03-18 12:24:30 +01:00
|
|
|
sys.stderr.write(str(e) + "\n")
|
2016-06-08 20:35:19 -05:00
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
sock.close()
|
2021-03-18 12:24:30 +01:00
|
|
|
print("<<<rrdcached>>>")
|
|
|
|
print(buffer.rstrip("\n"))
|