Zählen von Dateien auf einem Remote-Server mit SSH und einem Expect-Skript

Zählen von Dateien auf einem Remote-Server mit SSH und einem Expect-Skript

Unten ist mein Skript, um die Anzahl der auf dem Remote-Server vorhandenen Dateien zu ermitteln. Aber es funktioniert nicht.

#!/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

Antwort1

Damit dies funktioniert, würde ich zwei wesentliche Änderungen vorschlagen:

  1. öffentliche/private Schlüsselpaare verwenden
  2. Senden Sie Befehle auf der Kommandozeile an SSH

Sie können ssh-keygenmit ein neues privates-öffentliches Schlüsselpaar generieren und ssh-copy-idmit den generierten öffentlichen Schlüssel im neuen Konto unter installieren 172.0.0.2. Danach müssen Sie die expect "123"Sequenz nicht mehr durchlaufen.

Dadurch können Sie den Befehl auch einfacher über die Befehlszeile aufrufen ssh(vorausgesetzt, die Zeitzonen auf beiden Computern sind identisch):

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

echo "Error"Der cd-Befehl wird Ihnen bereits mitteilen, dass $destPath nicht existiert, Sie müssen das nicht selbst wiederholen. Sie können jedoch den Exit-Code testen und bei Bedarf etwas Sinnvolleres (als das ) tun .

verwandte Informationen