Debian Squeeze의 쉘을 통해 Unix 도메인 소켓과 어떻게 통신 할 수 있습니까? 쉘을 통해 memcached와

Debian Squeeze 웹 서버를 실행하고 있습니다. 나는 memcached를 설치 /tmp/memcached.sock하고 동일한 서버에있는 웹 사이트에서 메시지를 수신해야하기 때문에 유닉스 도메인 소켓 (at ) 을 수신하도록 memcached를 구성 했습니다.

잘 작동하는 것 같지만 쉘을 통해 memcached와 통신하여 내가하고있는 일을하고 있는지 확인하고 싶습니다.

memcached는 간단한 ASCII 프로토콜을 통해 메시지를 수락합니다 (정확하게 이해하면). TCP / IP에서 수신 대기 중이라면 다음과 같이 메시지를 보낼 수 있습니다 nc.

$ echo "stats settings" | nc localhost 11211

그러나 대신 텍스트를 도메인 소켓에 보내는 방법을 알 수 없습니다.

(OS X 사자를 실행) 내 노트북에서 모두 nc하고 telnet(가지 옵션이 있습니다 -U-u도메인 소켓을 사용하는 각각을). 그러나 Debian Squeeze 웹 서버에는 이러한 옵션이 없습니다.



답변

함께 netcat-openbsd하는이 -U옵션을 선택합니다. 없는 경우 netcat-traditional대신 설치 했을 것입니다 . 전환을 제안합니다.

명령 예 :
nc -U /var/run/socket


답변

으로 socat(A ‘두 개의 데이터 채널 간의 양방향 데이터 릴레이’)이 같은 유닉스 도메인 소켓에 연결할 수 있습니다 :

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

답변

netcat-openbsdUNIX 도메인 소켓 연결을 지원합니다. 이를 사용하여 UNIX 도메인 스트림 소켓 또는 UNIX 도메인 데이터 그램 소켓 에 연결할 수 있으므로 소켓 유형을 netcat에 알려야합니다.

예를 들어 /dev/logLinux의 파일은 UNIX 도메인 데이터 그램 소켓 소켓이므로 nc -U /dev/log 작동하지 않습니다 . 대신을 사용하십시오 nc -uU /dev/log. -u를 -U와 함께 사용하면 netcat에 이것이 UNIX 도메인 데이터 그램 소켓임을 알 수 있습니다.

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

마찬가지로을 사용하는 동안 socatUNIX-CLIENT 옵션을 사용하십시오. 이 옵션을 사용하면 UNIX 도메인 스트림UNIX 도메인 데이터 그램 소켓 에 모두 연결할 수 있습니다 . 맨 페이지 (man socat) 에서 ” 먼저 연결을 시도하고 실패하면 데이터 그램 소켓 인 것으로 가정하여 두 유형을 모두 지원합니다 “.

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

답변

데비안에서 socat 을 사용할 수 있습니다 . 설치하려면 :

# apt-get install socat