Pregunta

Tengo una aplicación que ejecuta comandos en un servidor Linux a través de SSH muy bien. Cuando me conecto a un servidor Solaris, las cosas no funcionan. Parece que la línea de comandos de Solaris está limitada a 267 caracteres.

¿Hay alguna manera de cambiar esto?

Actualización: como se señaló anteriormente, este es un límite para el shell predeterminado para Solaris (sh) vs Linux (bash). Entonces, ahora la pregunta es, ¿hay alguna manera de cambiar el límite para sh?

¿Fue útil?

Solución

Creo que (aunque puede estar equivocado) está relacionado con el shell predeterminado al que te estás conectando. Si realiza el cambio en Solaris al mismo shell que está utilizando en Linux, ¿eso soluciona el problema?

Por favor comente si hay una mejor ruta hacia una solución, y haré el cambio en mi respuesta.

Otros consejos

Puede ver la longitud máxima de su comando actual con este comando:

$ getconf ARG_MAX
1048320

He creado un script que puede determinar la longitud máxima de un comando remoto . Como Craig sugirió, su mejor apuesta es canalizar el comando al estándar, si esa es una opción.

Según lo veo, sus opciones son:

  1. Cambie el shell que usa en Solaris, cambiando el valor predeterminado para el usuario.
  2. No cambie el shell, pero cambie la forma en que ejecuta los comandos.

El primero es fácil, pero requiere que un administrador realice un cambio para cada combinación de usuario / máquina y puede afectar a otros programas. Cambiar la forma en que ejecuta los comandos será más rápido y más fácil de mantener a largo plazo. Como ejemplo, suponga que necesita ejecutar lo siguiente:

/usr/bin/foo with a very long list of options and parameters

Ahora mismo probablemente estés haciendo algo como esto:

ssh user@machine "/usr/bin/foo with a very long list of options and parameters"

Pero podrías hacer lo siguiente:

echo "/usr/bin/foo with a very long list of options and parameters" | \
ssh user@machine "/bin/bash"

Esto hará lo que quieras.

Cuando ejecuto configure en Solaris 10 y el script de configuración aparece con una cifra para la longitud de la línea de comandos, la respuesta está normalmente en el rango de 256 KB. Los shells estándar en Solaris sin duda no tienen un límite inferior a 300 bytes.

Dicho esto, no estoy seguro de cuál es tu problema. Podría arriesgarme a suponer que el SSH de Solaris tenga un límite más corto: no he encontrado el problema, pero tiendo a usar el SSH como una forma de conexión directa (interactiva) en lugar de ejecutar comandos largos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top