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:
- öffentliche/private Schlüsselpaare verwenden
- Senden Sie Befehle auf der Kommandozeile an SSH
Sie können ssh-keygen
mit ein neues privates-öffentliches Schlüsselpaar generieren und ssh-copy-id
mit 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 .