我正在尝试使用此脚本向服务器发送两个查询,以获取MK Livestatus:
live.py
#!/usr/bin/python
socket_path = "/tmp/run/live"
import socket
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(socket_path)
# Get Hosts
hosts = s.send("GET hosts\nColumns: name\n")
s.shutdown(socket.SHUT_WR)
hosts = s.recv(1024)
hosts = [ line.split(';') for line in hosts.split('\n')[:-1] ]
hostsB = s.send("GET hosts\nColumns: name\n")
s.close()
但是我收到了这个错误:
回溯(最近一次调用最后一次):文件“live.py”,第13行,in hostsB = s.send(“GET hosts \ nColumns:name \ n”)socket.error: [Errno 32]破管
我认为错误与命令“s.shutdown(socket.SHUT_WR)”有关。但作者说,这是required。如果你删除这一行,你将得不到答案(超时?)。
如何发送两个查询?
所以......我写了一个完成这项工作的函数: - )
功能
def sendQuery(query):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(socket_path)
s.send(query)
s.shutdown(socket.SHUT_WR)
answer = ''
while True:
data = s.recv(1024)
answer += data
if len(data) < 1024:
break
s.close()
return answer
用法
sendQuery("GET hosts\nColumns: name\n")
答案 0 :(得分:0)
所以......我写了一个完成这项工作的函数: - )
<强>功能强>
def sendQuery(query):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(socket_path)
s.send(query)
s.shutdown(socket.SHUT_WR)
answer = ''
while True:
data = s.recv(1024)
answer += data
if len(data) < 1024:
break
s.close()
return answer
<强>用法强>
sendQuery("GET hosts\nColumns: name\n")