2016-04-20 10 views
0

Ich habe nur eine kleine Frage an Sie.Bash-Skript zum Sammeln von Informationen von mehreren Servern

Ich habe ein kleines Shell-Skript gemacht, das mir erlaubt, eine Verbindung zu einem Server herzustellen und bestimmte Dateien zu sammeln und sie an einen anderen Ort auf einem anderen Server zu komprimieren, was gut funktioniert.

Es ist etwas in der Schaufel:

#!/bin/bash 

ssh -T [email protected] 

mkdir /tmp/logs 

cd /tmp/logs 

tar -czvf ./log1.tgz /somefolder/docs 

tar -czvf ./log2.tgz /somefolder/images 

tar -czvf ./log3.tgz /somefolder/video 

cd .. 

-czvf logs_all.tgz /tmp/logs 

Was ich wirklich tun möchte, ist:

  1. Einloggen mit dem Root-Passwort, wenn eine Verbindung über ssh
  2. Führen Sie die Befehle
  3. Abmelden
  4. Zum nächsten Server anmelden
  5. Wiederholen, bis alle Protokolle kompiliert wurden.

Auch ist es nicht wesentlich aber, wenn ich den Fortschritt anzeigen kann (als Bar vielleicht) dann wäre das cool !!

Wenn jemand helfen kann, wäre das genial.

Ich bin zwischen N00B und Anfänger, also bitte sei sanft mit mir !!

+0

mit einem root-Passwort wie t Anmelden bei Das wäre eine klaffende Sicherheitslücke ... Ich würde es weder für SSH als root-Benutzer noch als SSH-in-normal-Nutzung via script empfehlen und automatisch in root einsteigen, da man es irgendwo lesbar ablegen und weitergeben müsste zu deinem Login. Versuchen Sie vielleicht, Ansible oder etwas zu verwenden, wo Sie sudo-Passwörter oder Benutzerpasswörter im verschlüsselten Format speichern können, und geben Sie an, welcher Benutzer Befehle ausführen soll. – 264nm

Antwort

1

ssh kann einen Befehl als Argument auf dem entfernten Rechner auszuführen:

ssh -T [email protected] "tar -czf - /somefolder/anotherfolder" 

Dies wird den tar Befehl auf dem entfernten Rechner ausführen, die Ausgabe auf stdout tar schreiben, die auf den lokalen Rechner übergeben wird durch der ssh Befehl. So können Sie es schreiben vor Ort irgendwo (es gibt keine Notwendigkeit für diese /tmp/logs/ auf dem entfernten Rechner):

ssh -T [email protected] "tar -czf - /somefolder/anotherfolder" > /path/on/local/machine/log1.tgz 

Wenn Sie nur sie auf dem Server entfernen sammeln mögen (kein Wunsch, sie auf den lokalen Computer zu übertragen), nur tun, die gerade nach vorne Version:

ssh -T [email protected] "mkdir /tmp/logs/" 
ssh -T [email protected] "tar -cvzf /tmp/logs/log1.tgz /somefolder/anotherfolder" 
ssh -T [email protected] "tar -cvzf /tmp/logs/log2.tgz /somefolder/anotherfolder" 
… 
ssh -T [email protected] "tar -czvf /tmp/logs_all.tgz /tmp/logs" 
1

Sie könnten ein tar-Befehl senden, dass es ein komprimiertes Archiv zu Standard und lokal speichern schreibt:

ssh [email protected] 'tar -C /somefolder -czvf - anotherfolder' > server1.tgz 
ssh [email protected] 'tar -C /somefolder -czvf - anotherfolder' > server2.tgz 
... 
Verwandte Themen