Estoy tratando de ingresar a un servidor y ejecutar varios comandos en el host.
Logré hacer lo siguiente y funciona perfectamente
ssh -t -X thor 'cd /stmp/username; ls -rtl ; rm ~/tmp.file; tcsh -l'
Actualmente, estoy tratando de expandir el comando para cambiar el directorio a la última carpeta que aparece en / stmp / username /
En primer lugar, probé el comando que quería usar en el terminal y funciona. Irá a la última carpeta en la lista del directorio. El comando es
cd `ls -rtl | cut -d' ' -f9 | tail -1`
Ahora estoy tratando de combinar el comando anterior en el comando ssh. Pero no funciona.
ssh -t -X thor 'cd /stmp/username; cd `ls -rtl |cut -d' ' -f9 | tail -1` ; rm ~/tmp.file; tcsh -l'
¿Hay algo mal con mi comando?
ssh -t -X thor "cd ... "
para preservar las comillas simples incluidas para su espacio o escapar del espacio.ls(1)
.Respuestas:
Cuando su comando funciona desde la línea de comandos, p. Ej.
No hay problemas de citas presentes. Sin embargo, cuando intenta agregar eso a su
ssh
comando, lo envuelvessh
en comillas simples , pero también ha incluido comillas simples dentro de su comando para encerrar el' '
(espacio) con elcut
comando, lo que causa problemas.La solución más sencilla es dejar la cita alrededor de su
ssh
comando para comillas simples y cambiar la cita alrededor de laspace
que comillas dobles dentro de ella, por ejemplo,(como resultado no hay problemas de expansión de ruta o variables)
Haz el cambio y avísame si tienes más preguntas.
nota: también debe evitar la sustitución de comandos utilizando backticks a favor de
$(...)
- mucho más legible.fuente
$(ls -rtl |cut -d" " -f9 | tail -1)
lugar de`ls -rtl |cut -d" " -f9 | tail -1`
ssh -t -X thor "cd ... "
no funcionó?