我有一个使用nc
向容器发送信号的脚本(特别是支持Unix域套接字-U
的openbsd版本):
echo -e "POST /containers/$HAPROXY_CONTAINER/kill?signal=HUP HTTP/1.0\r\n" | \
nc -U /var/run/docker.sock
我想知道是否可以避免使用openbsd nc
依赖项或socat
依赖项,因此我尝试在Python 3中执行相同的操作:
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('/var/run/docker.sock')
sock.sendall(str.encode('POST /containers/{}/kill?signal=HUP HTTP/1.0\r\n'.format(environ['HAPROXY_CONTAINER'])))
我没有从Python版本中获得任何错误,但是我的容器没有收到我试图发送的信号。
答案 0 :(得分:0)
在bash版本中,echo
提供了一个额外的新行。 HTTP在标题之后需要两个新行,因此Python sendall
需要第二个\n
,如下所示:
sock.sendall(str.encode('POST /containers/{}/kill?signal=HUP HTTP/1.0\r\n\n'.format(environ['HAPROXY_CONTAINER'])))