Como posso me comunicar com um soquete de domínio Unix via shell no Debian Squeeze?

81

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.

    
por Paul D. Waite 13.12.2011 / 10:19

4 respostas

56

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

    
por 14.12.2011 / 00:11
82

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
    
por 22.08.2012 / 21:55
16

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
    
por 06.07.2016 / 15:21
14

Você pode usar o socat no Debian. Para instalá-lo:

# apt-get install socat
    
por 13.12.2011 / 22:50