Contando arquivos em um servidor remoto com ssh e um script de espera

0

Abaixo, meu script leva em consideração os arquivos que estão presentes no servidor remoto. Mas isto não está funcionando. Por favor me ajude.

#!/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
    
por Rahul Singh 30.04.2013 / 09:42

1 resposta

1

Para que isso funcione, sugiro duas grandes mudanças:

  1. use chaves telefônicas públicas / privadas
  2. envia comandos na linha de comando para ssh

Você pode usar ssh-keygen para gerar um novo par de chaves público-privadas e usar ssh-copy-id para instalar a chave pública gerada na nova conta em 172.0.0.2 . Depois disso, você não precisa mais passar pela sequência expect "123" .

Isso também permite chamar ssh com o comando na linha de comando mais facilmente (assumindo que as timezondes em ambas as máquinas são as mesmas):

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 ecoar você mesmo. Mas você pode testar o código de saída e fazer algo mais significativo (do que o echo "Error" ), se necessário.

    
por 30.04.2013 / 10:22