我真的很难连接和读取现有的unix文件套接字。
套接字存在,是Mode + rwx,应该返回一个json oneliner(不带换行符)。
(我没有问题阅读基于debian的系统上的套接字,如ncat -U /run/fastd.supernode.sock
)
虽然我尝试在嵌入式设备上解决它TP-Link841v11-ND Mips(来自TP Link的OpenWRT / LEDE路由器上的Fastd Socket)主要只有lua(和luasocket)可用。 我到目前为止
$ lua
> socket = require"socket"
> socket.unix = require"socket.unix"
> getme = socket.unix("/var/run/fastd.mesh_vpn.socket")
> print(getme:receive())
stdin:1: calling 'receive' on bad self (unix{client} expected, got userdata)
stack traceback:
[C]: in function 'receive'
stdin:1: in main chunk
[C]: ?
解决方案,针对有类似问题的人
(如此处所述https://forum.freifunk.net/t/connect-fastd-socket-on-tp841v11-fastd-statistiken/13499)
(每次想要阅读套接字时都需要重新连接)
$ lua
> require "socket"
> require "socket.unix"
> c = socket.unix()
> c:connect("/var/run/fastd.mesh_vpn.socket")
> print(c:receive())