Contando archivos en un servidor remoto con ssh y un script de espera

Contando archivos en un servidor remoto con ssh y un script de espera

A continuación se muestra mi secuencia de comandos para contar los archivos que están presentes en el servidor remoto. Pero no está funcionando.

#!/usr/bin/expect

spawn ssh [email protected]
expect "123"
send "123"
interact
destPath='/archive/Input/ERICIN/AIR/EMG'
dayStamp=`(date --date='1 day ago' '+%Y%m%d')`
if [ -d $destPath ]
then
     cd $destPath
     `cat 'emg_audit_1_'$dayStamp.csv|grep 'ACTPSO_NE_'$dayStamp|wc -l > /home/stsuser/eastregioncount/NEremote$dayStamp.txt`
else
        echo "ERROR: Path $destPath Does not Exists."
fi

Respuesta1

Para que esto funcione, sugeriría dos cambios importantes:

  1. utilizar pares de claves públicas/privadas
  2. enviar comandos en la línea de comandos a ssh

Puede usarlo ssh-keygenpara generar un nuevo par de claves pública-privada y usarlo ssh-copy-idpara instalar la clave pública que genere en la nueva cuenta en 172.0.0.2. Después de eso, ya no tendrás que seguir la expect "123"secuencia.

Eso también le permite llamar sshcon el comando en la línea de comandos más fácilmente (suponiendo que las zonas horarias en ambas máquinas sean las mismas):

destPath='/archive/Input/ERICIN/AIR/EMG'
dayStamp=`(date --date='1 day ago' '+%Y%m%d')`
ssh [email protected] "cd $destPath; cat 'emg_audit_1_'$dayStamp.csv| grep 'ACTPSO_NE_'$dayStamp| wc -l > /home/stsuser/eastregioncount/NEremote$dayStamp.txt"
if [ $? -ne 0 ] 
then 
    echo "ERROR"
fi

El comando cd ya le dirá que $destPath no existe, no es necesario que lo repita usted mismo. Pero puedes probar el código de salida y hacer algo más significativo (que echo "Error") si es necesario.

información relacionada