Linux Script: Aktionen auf weiterem Server in ein Logfile schreiben?
Hallo,
ich muss auf mehreren Servern Verzeichnisse löschen (das funktioniert auch) und möchte das gerne auf dem Server, auf dem das Script läuft, in ein Logfile schreiben. Bisher habe ich das aber nicht geschafft :-(.
Ich weiß, dass man das auch mit Ansible machen kann, steht hier aber nicht zur Diskussion.
Hier mal der Aufbau des Scriptes:
Hauptserver:
Ordner mit Logdatei erzeugen:
Schleife zum löschen von Verzeichnissen auf anderen Servern
for str in $vSTR
do
echo "[######################## $addr - $ui_package ####################]" | tee -a $log_file;
folder="$str$ui_package" | tee -a $log_file;
ssh $addr "cd /home/verzeichnis/ && find $folder;
if [ -d "$folder" ]; then
echo "Das Verzeichnis existiert. Loesche es..."
rm -r "$folder"
echo "Das Verzeichnis $folder wurde geloescht" | tee -a $log_file; => hier, funktioniert das Schreiben in die Logdatei nicht
else
echo "Das Verzeichnis $folder existiert nicht." | tee -a $log_file; => hier, funktioniert das Schreiben in die Logdatei nicht
fi "
done
Geht das überhaupt, dass ich Aktionen, die ich auf einem zweiten Server ausführe, auf dem Server, auf dem das Script läuft, in eine Logdatei schreibe?
Vielen Dank für jegliche Hilfe!
Gruß
Carpi
2 Antworten
rlogd, der log daemon, kann auch zu entfernten Maschinen, auf denen ebenfalls ein solcher log daemon läuft, übers Netzwerk loggen.
Dafür brauchst du keine eigenen Scripte zu basteln, sondern entsprechend zu konfigurieren, was schon vorhanden ist.
Suchbegriff: "remote logging"
loggen, also auch remote, kannst du dann mit dem logging Hilfsprogramm "logger"
Du müsstest den SSH Output catchen und dann erst den gecatchen Output in das lokale Logfile schreiben.
Also in etwa
foo=$(ssh [usw...])
echo $foo | tee -a $log_file
ggf. noch den Output redirecten ( 2>&1 oder ähnliches) beim ssh
Erst mal vielen Dank für den Hinweis, ich schaue mir das mal an.