Com netcat-openbsd
, existe uma opção -U
. Se você não tiver, provavelmente terá netcat-traditional
instalado; Eu sugiro mudar.
Exemplo de comando:
nc -U /var/run/socket
Estou executando um servidor da web do Google Squeeze. Instalei o memcached nele e configurei o memcached para escutar em um soquete do domínio Unix (em /tmp/memcached.sock
), pois ele só precisa receber mensagens do site, que mora no mesmo servidor.
Parece que está funcionando bem, mas também gostaria de me comunicar com o memcached por meio do shell, para verificar se ele está fazendo o que eu acho que está fazendo.
memcached aceita mensagens através de um protocolo ASCII simples (se bem entendi). Se estivesse ouvindo no TCP / IP, eu poderia enviar mensagens para ele por meio de, e. nc
:
$ echo "stats settings" | nc localhost 11211
Mas não consigo descobrir como enviar esse texto para o soquete do domínio.
No meu laptop (que executa o OS X Lion), as opções nc
e telnet
têm opções ( -U
e -u
respectivamente) para usar soquetes de domínio. No entanto, no meu servidor web Squeeze, essas opções não estão presentes.
Com socat
(um 'retransmissão de dados bidirecional entre dois canais de dados') você pode se conectar ao domínio unix soquete como este:
$ socat - UNIX-CONNECT:/tmp/memcached.sock
netcat-openbsd
suporta a conexão a soquetes do domínio UNIX. Usando isso, você pode se conectar a um soquete de fluxo do domínio UNIX ou a um soquete de datagrama do domínio UNIX e, portanto, você deve informar o tipo de soquete ao netcat.
por exemplo, o arquivo /dev/log
no Linux é um soquete do soquete do datagrama do domínio UNIX , portanto nc -U /dev/log
não funcionará . Em vez disso, use nc -uU /dev/log
. Usando -u junto com -U informa ao netcat que é um soquete de datagrama de domínio UNIX.
nc -U /tmp/socket #Connect to UNIX-domain stream socket
nc -uU /tmp/socket #Connect to UNIX-domain datagram socket
Da mesma forma, ao usar socat
, use a opção UNIX-CLIENT. Usando essa opção, você pode se conectar a ambos os soquetes UNIX-domain stream e UNIX-domain datagram . De sua página man (man socat) , " Ele primeiro tenta se conectar e, se isso falhar, assume que é um
datagrama, suportando assim ambos os tipos ".
socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type
Você pode usar o socat no Debian. Para instalá-lo:
# apt-get install socat