it-swarm-eu.dev

Jak mohu komunikovat s doménou Unix pomocí Shell on Debian Squeeze?

Provozuji webový server Debian Squeeze. Nainstaloval jsem do něj memcached a nakonfiguroval memcached tak, aby poslouchal v soketu domény Unix (na /tmp/memcached.sock), protože potřebuje pouze přijímat zprávy z webu, který žije na stejném serveru.

Zdá se, že to funguje dobře, ale rád bych také komunikoval s memcached přes Shell, abych zkontroloval, že dělá to, co si myslím, že to dělá.

memcached přijímá zprávy pomocí jednoduchého ASCII protokolu (pokud tomu rozumím správně). Pokud to naslouchá na TCP/IP, mohl bych do něj posílat zprávy např. nc:

$ echo "stats settings" | nc localhost 11211

Ale nedokážu přijít na to, jak místo toho poslat tento text do soketu domény.

Na mém notebooku (který provozuje OS X Lion) mají možnosti nc i telnet možnosti (-U a -u)) pro použití soketů domény. Na mém webovém serveru Debian Squeeze však tyto možnosti neexistují.

105
Paul D. Waite

S netcat-openbsd, tady je -U možnost. Pokud ji nemáte, pravděpodobně máte netcat-traditional místo toho nainstalován; Navrhoval bych přepnout.

Příklad příkazu: nc -U /var/run/socket

76
derobert

Pomocí socat ('obousměrný datový přenos mezi dvěma datovými kanály') se můžete připojit k soketu unixové domény takto:

$ socat - UNIX-CONNECT:/tmp/memcached.sock
97
maxschlepzig

netcat-openbsd podporuje připojení k soketům domén UNIX. Pomocí tohoto se můžete připojit buď k soketu toku domény UNIX nebo a soketu datagramu UNIX, a proto musíte soketu říct typu netcat .

například, /dev/log soubor v Linuxu je soket = [- soket datagramu UNIX soket, tedy nc -U /dev/lognebude fungovat. Místo toho použijte nc -uU /dev/log. Použití -u spolu s -U říká netcat, že se jedná o soket datagramu UNIX.

nc -U /tmp/socket  #Connect to UNIX-domain stream socket
nc -uU /tmp/socket #Connect to UNIX-domain datagram socket


Podobně při použití socat použijte volbu UNIX-CLIENT. Pomocí této možnosti se můžete připojit k oběma datový proud domény UNIX a datovýgram domény UNIX sokety. Z jeho manuálové stránky (man socat), " Nejprve se pokusí připojit, a pokud se to nezdaří, předpokládá se, že jde o soket datagramu, čímž podporuje oba typy ".

socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type
22
Sahil Singh

Na Debianu můžete použít socat . Postup instalace:

# apt-get install socat
15
sendmoreinfo

Pokud jste náhodou v systému, který má nainstalován pouze busybox, může to vypadat, že nepodporuje sokety unixové domény (znak -U možnost neexistuje), ale našel jsem následující díla:

$ echo "stats slabs" | nc local:/tmp/memcached.sock
STAT active_slabs 0
STAT total_malloced 0
END

To může být skutečně užitečné při vytváření zdravotních kontrol alpských kontejnerů.

3
Greg Bray