script ejemplo automatizado bash ssh find scp

bash - ejemplo - pasar la variable para buscar a través de ssh para la opción-newermt



script sftp automatizado linux (1)

El problema es que estás citando en el lado local pero no en el lado remoto.

Las comillas dobles que está utilizando alrededor de "$T1" y "$T2" están siendo eliminadas por el shell local antes de ejecutar el comando ssh pero el comando remoto no tiene las comillas que protegen el espacio del shell remoto.

Entonces el shell local ve:

[ssh] [[email protected]] [find] [/appl/backup/monsters/${CLUSTER}/${node}/${STIME}/jelly/] [-newermt] [2016-04-26 07:40:00] [/!] [-newermt] [2016-04-26 07:50:00]

pero el shell remoto ve:

[ssh] [[email protected]] [find] [/appl/backup/monsters/${CLUSTER}/${node}/${STIME}/jelly/] [-newermt] [2016-04-26] [07:40:00] [/!] [-newermt] [2016-04-26] [07:50:00]

y ese es el problema.

El argumento para -newermt se ve como 2016-04-26 y 07:40:00 se ve como un argumento vagabundo que find ve como una ruta y por lo tanto le da el error de "las rutas deben ir primero".

Necesita las comillas para pasar al lado remoto, así que comillas dobles de toda la cadena (para permitir la expansión variable localmente) y luego utilice comillas simples alrededor de los valores expandidos para el shell remoto.

ssh [email protected] "find ''/appl/backup/monsters/${CLUSTER}/${node}/${STIME}/jelly/'' -newermt ''$T1'' /! -newermt ''$T2''"

Estoy intentando copiar un grupo de archivos dentro de un cierto intervalo de tiempo desde un servidor remoto (servidor B) con un script ejecutado en un servidor local (Servidor A). Estoy usando la opción -newermt en find para especificar mi rango de tiempo. Entonces, si hago ssh en el servidor remoto (servidor B), esto funciona:

find /appl/backup/monsters/green/y.y.y.y/2016-04-26_08-00-01/jelly/ -newermt "2016-04-26 07:40:00" /! -newermt "2016-04-26 07:50:00"

Y obtengo la lista de archivos para los tiempos especificados.

Sin embargo, si intento involucrar esto desde el servidor local (servidor A) a través de ssh:

#!/bin/bash # CLUSTER="green" node="x.x.x.x" STIME="2016-04-26_08-00-01" #T1=1461678000 #T2=1461678600 T1="2016-04-26 07:40:00" T2="2016-04-26 07:50:00" ssh [email protected] find /appl/backup/monsters/${CLUSTER}/${node}/${STIME}/jelly/ -newermt "$T1" //! -newermt "$T2" echo $latest_file echo SCP Completed. exit

Esto me da un error de búsqueda:

find: las rutas deben preceder a la expresión: 07:40:00

Entonces parece que con este método find no le gusta el espacio en "2016-04-26 07:40:00"

Traté de convertir a unixtimestamps para evitar el uso de un espacio, pero no me gustan los:

encontrar: no puedo entender cómo interpretar `1461678000 ''como una fecha u hora

Mi pregunta es si tengo que delimitar el carácter de espacio para esto o llaves, estoy intentando algunas cosas, pero estoy buscando a tientas: - / cualquier ayuda es apreciada.

¡Gracias!