![Contando archivos en un servidor remoto con ssh y un script de espera](https://rvso.com/image/31672/Contando%20archivos%20en%20un%20servidor%20remoto%20con%20ssh%20y%20un%20script%20de%20espera.png)
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:
- utilizar pares de claves públicas/privadas
- enviar comandos en la línea de comandos a ssh
Puede usarlo ssh-keygen
para generar un nuevo par de claves pública-privada y usarlo ssh-copy-id
para 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 ssh
con 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.