Shell Debian Socket – How to Communicate with a Unix Domain Socket via the Shell on Debian Squeeze

debianshellsockettelnet

I’m running a Debian Squeeze web server. I’ve installed memcached on it, and configured memcached to listen on a Unix domain socket (at /tmp/memcached.sock), as it only needs to receive messages from the website, which lives on the same server.

It seems to be working fine, but I’d also like to communicate with memcached via the shell, to check that it’s doing what I think it’s doing.

memcached accepts messages via a simple ASCII protocol (if I understand correctly). If it was listening on TCP/IP, I could send messages to it via e.g. nc:

$ echo "stats settings" | nc localhost 11211

But I can’t figure out how to send that text to the domain socket instead.

On my laptop (which runs OS X Lion), both nc and telnet have options (-U and -u respectively) to use domain sockets. However, on my Debian Squeeze web server, these options aren’t present.

Best Answer

With netcat-openbsd, there is a -U option. If you don't have it, you probably have netcat-traditional installed instead; I'd suggest switching.

Example command: nc -U /var/run/socket