ver socket puertos para letras directorios comandos comando abiertos unix sockets command-line named-pipes

unix - puertos - sockets en linux



Una herramienta de línea de comandos Unix estándar para conectar a un socket (5)

netcat ayudará a establecer un conducto a través de la red.

Tengo algunas aplicaciones y herramientas estándar de Unix que envían su salida a tuberías con nombre en Solaris, sin embargo, las tuberías con nombre solo se pueden leer desde el almacenamiento local (en Solaris), así que no puedo acceder a ellas desde la red o colocar las tuberías en un almacenamiento NFS para acceso en red a su salida.

Lo que me hizo preguntarme si había una forma análoga de reenviar la salida de las herramientas de línea de comandos directamente a los sockets, decir algo como:

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


netcat (también conocido como nc ) es exactamente lo que estás buscando. Está llegando a ser razonablemente estándar, pero no disponible en todos los sistemas.

socat parece ser una versión reforzada de netcat, con muchas más funciones, pero menos comúnmente disponible.

En Linux, también puede usar /dev/tcp/<host>/<port> . Consulte la guía avanzada Bash-Scripting para obtener más información.


Netcat es genial para esto. Aquí hay una página con algunos ejemplos comunes .

El uso de su caso podría verse más o menos así:

  1. El servidor escucha una conexión y luego le envía un resultado:

    server$ my_script | nc -l 7777

  2. El cliente remoto se conecta al server en el puerto 7777, recibe datos y los guarda en un archivo de registro:

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


Es posible que desee utilizar uno de:

  1. ssh: seguro (encriptado), ya instalado de fábrica en Solaris, pero debe configurar un par de claves para sesiones no interactivas
  2. netcat: fácil de configurar, pero inseguro y abierto a los ataques

Todos están en el camino correcto con netcat. Pero quiero agregar que si está conectando con nc y esperando una respuesta, necesitará usar la opción -q <seconds> . Del manual:

-q segundos

después de EOF en stdin, espere el número especificado de segundos y luego salga. Si los segundos son negativos, espera por siempre.

Por ejemplo, si quiere interactuar con su agente SSH, puede hacer algo como esto:

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

Un ejemplo más completo está en https://gist.github.com/RichardBronosky/514dbbcd20a9ed77661fc3db9d1f93e4

* Robé esto de https://ptspts.blogspot.com/2010/06/how-to-use-ssh-agent-programmatically.html