Làm cách nào tôi có thể giao tiếp với ổ cắm tên miền Unix thông qua trình bao trên Debian Squeeze?


99

Tôi đang chạy một máy chủ web Debian Squeeze. Tôi đã cài đặt memcached trên nó và cấu hình memcached để nghe trên một ổ cắm tên miền Unix (at /tmp/memcached.sock), vì nó chỉ cần nhận tin nhắn từ trang web, nằm trên cùng một máy chủ.

Nó dường như đang hoạt động tốt, nhưng tôi cũng muốn liên lạc với memcached qua shell, để kiểm tra xem nó có làm những gì tôi nghĩ nó đang làm không.

memcached chấp nhận tin nhắn qua giao thức ASCII đơn giản (nếu tôi hiểu chính xác). Nếu nó đang nghe trên TCP / IP, tôi có thể gửi tin nhắn đến nó thông qua: vd nc:

$ echo "stats settings" | nc localhost 11211

Nhưng tôi không thể tìm ra cách gửi văn bản đó đến ổ cắm tên miền thay thế.

Trên máy tính xách tay của tôi (chạy OS X Lion), cả hai nctelnetcó các tùy chọn ( -U-utương ứng) để sử dụng ổ cắm tên miền. Tuy nhiên, trên máy chủ web Debian Squeeze của tôi, các tùy chọn này không có.

Câu trả lời:


72

Với netcat-openbsd, có một -Ulựa chọn. Nếu bạn không có nó, có lẽ bạn đã netcat-traditionalcài đặt thay thế; Tôi muốn đề nghị chuyển đổi.

Lệnh ví dụ: nc -U /var/run/socket


vậy netcat sẽ tạo một tập tin mới tại /var/run/socket? Có cách nào để sử dụng lại một tập tin hiện có?
Alexander Mills

1
@AlexanderMills Nếu bạn bảo nó nghe ( -l), nó sẽ tạo tệp. Mặt khác, nó hy vọng ổ cắm đã tồn tại (và đã có một cái gì đó lắng nghe trên nó). Vì vậy, lệnh ví dụ trong câu trả lời không tạo ra tệp.
derobert

94

Với socat(một 'chuyển tiếp dữ liệu hai chiều giữa hai kênh dữ liệu'), bạn có thể kết nối với ổ cắm miền unix như thế này:

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

19

netcat-openbsdhỗ trợ kết nối với các ổ cắm tên miền UNIX. Sử dụng điều này, bạn có thể kết nối với một ổ cắm luồng tên miền UNIX hoặc ổ cắm datagram tên miền UNIX , và do đó bạn phải nói loại của ổ cắm với netcat.

ví dụ, /dev/logtệp trong Linux là ổ cắm ổ cắm datagram tên miền UNIX , do đó nc -U /dev/log sẽ không hoạt động . Thay vì sử dụng nc -uU /dev/log. Sử dụng -u cùng với -U nói với netcat rằng đó là một ổ cắm datagram tên miền UNIX.

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


Tương tự, trong khi sử dụng socat, sử dụng tùy chọn UNIX-CLIENT. Sử dụng tùy chọn này, bạn có thể kết nối với cả luồng miền UNIX và ổ cắm datagram tên miền UNIX . Từ trang man của nó (man socat) , " Đầu tiên nó cố gắng kết nối và nếu thất bại, giả sử đó là một ổ cắm datagram, do đó hỗ trợ cả hai loại ".

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

1
Nó là linh hoạt đáng ngạc nhiên, công cụ tốt parametrizable.
dùng259412

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.