2009-02-23 11 views
15

Mam kilka aplikacji i standardowych narzędzi Unixa wysyłających ich wyniki do nazwanych potoków w systemie Solaris, jednak nazwane potoki można odczytać tylko z lokalnego magazynu (w systemie Solaris), więc nie mogę uzyskać do nich dostępu z sieci lub umieścić rury w pamięci NFS, aby uzyskać dostęp do ich danych w sieci.Standardowe narzędzie wiersza polecenia dla systemu UNIX do instalacji w gnieździe

który dostał mnie zastanawiać, czy istnieje sposób analogiczny do przekazania wyjście narzędzi wiersza polecenia bezpośrednio do gniazd, powiedzieć coś w stylu:

mksocket mysocket:12345 
vmstat 1 > mysocket 2>&1 

Odpowiedz

19

Netcat jest świetny do tego. Oto page with some common examples.

Wykorzystanie w Twoim przypadku może wyglądać tak:

  1. Server nasłuchuje połączenia, a następnie wysyła dane wyjściowe do niego:

    server$ my_script | nc -l 7777

  2. Zdalny klient łączy się server na porcie 7777, odbiera dane, zapisuje do pliku dziennika:

    client$ nc server 7777 >> /var/log/archive

+0

dzięki, i dzięki za przykłady! –

+0

jeśli "nc -l 7777" nie działa spróbuj "nc -l -p 7777" –

6

netcata pomogą ustalić rurę przez sieć.

3

Możesz użyć jednego z:

  1. ssh: bezpieczne (szyfrowane), zainstalowane out-of-the-box w systemie Solaris - ale trzeba założyć parę kluczy dla niezarejestrowanych -interaktywne sesje
  2. netcat: prosty w konfiguracji - ale niepewnie i otwarty na ataki
+0

dzięki za odpowiedź ssh, w tym przypadku bezpieczeństwo nie jest problemem, ale dobrze jest mieć go tutaj w pytaniu –

14

netcat (znany również jako nc) jest dokładnie to, czego” szukam ponownie. Zaczyna być dość standardowy, ale nie dostępny na wszystkich systemach.

socat wydaje się być wzmocnioną wersją netcata, z wieloma dodatkowymi funkcjami, ale rzadziej dostępnymi.

W systemie Linux można również użyć /dev/tcp/<host>/<port>. Aby uzyskać więcej informacji, patrz Advanced Bash-Scripting Guide.

0

Każdy jest na właściwej drodze z netcat. Ale chcę dodać, że jeśli podłączysz się do nc i spodziewasz się odpowiedzi, musisz użyć opcji -q <seconds>. Z instrukcji:

-q sekund

po EOF w przypadku standardowego wejścia, odczekać określoną liczbę sekund, a następnie zamknąć.Jeśli sekundy są ujemne, poczekaj na zawsze.

Na przykład, jeśli chcesz interakcji z agentem SSH można zrobić coś takiego:

echo -en '\x00\x00\x00\x01\x0b' | nc -q 1 -U $SSH_AUTH_SOCK | strings 

Pełniejszy przykład jest https://gist.github.com/RichardBronosky/514dbbcd20a9ed77661fc3db9d1f93e4

* Ukradłem to z https://ptspts.blogspot.com/2010/06/how-to-use-ssh-agent-programmatically.html

Powiązane problemy