使用Python读取Unix域套接字文件类似于普通的TCP套接字:
>>> import socket
>>> import sys
>>>
>>> server_address = '/tmp/tbsocket1' # Analogous to TCP (address, port) pair
>>> sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
>>> sock.connect(server_address)
>>> sock.recv(512)
'*** uWSGI Python tracebacker output ***\n\n'
由于UDS不是普通文件,cat
不适用于它们:
$ sudo cat /tmp/tbsocket1
cat: /tmp/tbsocket1: No such device or address
curl
:
$ sudo curl /tmp/tbsocket1
curl: (3) <url> malformed
如何使用curl等标准命令行工具读取或写入Unix域套接字?
PS:奇怪的是巧合,curl patch was suggested very recently)
答案 0 :(得分:18)
您可以使用ncat
项目中的nmap
命令:
ncat -U /tmp/tbsocket1
为方便访问,您可以这样做:
# forward incoming 8080/tcp to unix socket
ncat -vlk 8080 -c 'ncat -U /tmp/tbsocket1'
# make a http request via curl
curl http://localhost:8080
您还可以使用socat
:
# forward incoming 8080/tcp to unix socket
socat -d -d TCP-LISTEN:8080,fork UNIX:/tmp/tbsocket1
答案 1 :(得分:1)
nc -U </unix/socket>
在几乎所有Linux,BSD,MacO中都可以使用。