![Contando arquivos em um servidor remoto com ssh e um script expect](https://rvso.com/image/31672/Contando%20arquivos%20em%20um%20servidor%20remoto%20com%20ssh%20e%20um%20script%20expect.png)
Abaixo está meu script para contar os arquivos que estão presentes no servidor remoto. Mas isto não 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
Responder1
Para fazer isso funcionar, sugiro duas mudanças principais:
- use pares de chaves públicas/privadas
- envie comandos na linha de comando para ssh
Você pode usar ssh-keygen
para gerar um novo par de chaves pública-privada e usar ssh-copy-id
para instalar a chave pública gerada na nova conta no 172.0.0.2
. Depois disso você não precisa expect "123"
mais passar pela sequência.
Isso também permite que você chame ssh
com o comando na linha de comando com mais facilidade (assumindo que os fusos horários em ambas as máquinas sejam iguais):
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
O comando cd já lhe dirá que $destPath não existe, não há necessidade de repetir isso você mesmo. Mas você pode testar o código de saída e fazer algo mais significativo (que o echo "Error"
), se necessário.