Zugriff auf externen Server mit SSH - private key - scp funktioniert, rsync nicht

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
@Benares : danke auch dir, aber das hatte ich bereits kapiert und mit "prima, danke, das funzt" gemeint ;)
@luddi : Jawohl, klasse. Mein Fehler war, dass ich erst ab " | sort" angehängt habe. Hätte ich mal vorher schon nachgesehen, was "tr" macht, wär ich wohl selbst drauf gekommen, dass das auch dazugehört....:eek:
 

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.558
Punkte für Reaktionen
15
Punkte
64
Um ehrlich zu sein hatte ich mir deine Befehle überhaupt nicht im Detail angeschaut. Ich wollte dir nur zeigen wie man diese beiden Befehle in einer Zeile kombinieren kann und sofort einer Variable zuweist ohne den Zwischenschritt einer zweiten Variable.

Nun habe ich nochmals gnau hingesehen und mir fällt auf, dass die beiden Translate (tr) Befehle in Kombination überhaupt keinen Sinn ergeben.
Zuerst ersetzt du mit tr " " "\n" die Leerzeichen durch einen Zeilenubruch, und nach dem Sortieren ersetzt du mit tr "\n" " " die Zeilenumbrüche wieder mit Leerzeichen... :unsure: Ein alleiniges | sort ohne die beiden Transformationen reicht vollkommen aus. Das hin und her Umwandeln/Ersetzen kann man sich ersparen.

Bash:
string1=`find $sendDir -type f -exec openssl dgst -md5 {} \; | egrep -o [0-9a-zA-Z]{32} | sort`
 
  • Like
Reaktionen: Alfredo123

Benares

Benutzer
Mitglied seit
27. September 2008
Beiträge
3.492
Punkte für Reaktionen
32
Punkte
108
Ich hatte @Alfredo123 so verstanden, als wolle er was sortieren, dass in einem String hintereinander steht, so etwa in der Art:
Code:
root@DS415:~# echo "C B A" | sort
C B A
root@DS415:~# echo "C B A" | tr " " "\n" | sort | tr "\n" " "
A B C
 
  • Like
Reaktionen: Alfredo123

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
@luddi : Natürlich hast du auch hier wieder Recht -Edit: Hatte ich zuerst gedacht, sh. unten. Wie gesagt, ich hatte diese Sort-Zeile nur auf der Suche nach "Linux String sortieren" gefunden, getestet und gesehen, dass es funktioniert. Erst hinterher hatte ich mir den "tr"-Befehl angesehen und auch dann erst kapiert, was da eigentlich passiert. Und - auch um ehrlich zu sein - war ich dann zufrieden, dass es geht, und auch nicht mehr ausprobiert, obs ohne die beiden tr auch funktioniert.
Edit: jetzt hab ichs getestet: Ohne die Umwandlung von Leerzeichen in Zeilenumbrüche gehts nicht; offensichtlich funktioniert der sort-Befehl nur zeilenweise? :unsure:
@Benares : Ja, genau, und genau den Test hab ich eben auch gemacht...
PS.: Natürlich auch euch beiden wieder herzlichen Dank fürs Mitdenken und die Tips!!!😍😍
 
Zuletzt bearbeitet:

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.558
Punkte für Reaktionen
15
Punkte
64
@Benares Das stimmt folglich was du hier zeigst mit echo "C B A" | sort denn ein String selbst zu sortieren klappt allein mit sort nicht.

ABER:
Der Befehl mit find und Prüfsumme berechnen liefert ein Ergebnis mit einer Ausgabe von Zeilenumbrüchen "\n".
Diese Ausgabe wird nun sortiert und erst dann der Variablen zugewiesen.

Step by Step damit ihr seht was genau passiert:

1.
Es liegen genau 3 Random Dateien in einem Verzeichnis
-rwxrwxrwx 1 root root 10485760 Jun 27 16:06 rndfile1.txt
-rwxrwxrwx 1 root root 10485760 Jun 27 16:06 rndfile2.txt
-rwxrwxrwx 1 root root 10485760 Jun 27 16:06 rndfile3.txt

2. Es wird nur der Befehl find mit dem egrep ausgeführt um die Prüfsummen auszugeben. Das Ergebnis in der Kommandozeile ist wie folgt:
Befehl:
find ./ -type f -exec openssl dgst -md5 {} \; | egrep -o [0-9a-zA-Z]{32}
Ausgabe:
45a84804a7f9f7152911afcd7e8c7b9f
8022dbde82d145705846ad907e5cd507
0c11c1a44cbba628769cc1920d22789c

Ergebnis: Prüfsummen zeilenweise ausgegeben, aber NICHT alphabetisch sortiert!

3. Jetzt hängen wir den | sort Befehl hinten an und erhalten:
Befehl:
find ./ -type f -exec openssl dgst -md5 {} \; | egrep -o [0-9a-zA-Z]{32} | sort
Ausgabe:
0c11c1a44cbba628769cc1920d22789c
45a84804a7f9f7152911afcd7e8c7b9f
8022dbde82d145705846ad907e5cd507

Ergebnis: Prüfsummen zeilenweise ausgegeben, dieses mal alphabetisch sortiert!

4. Und wenn wir das ganze in einen Befehl packen und einer Variablen zuweisen und diese im Anschluss Ausgeben erhalten wir:
Befehl:
string1=`find ./ -type f -exec openssl dgst -md5 {} \; | egrep -o [0-9a-zA-Z]{32} | sort`; echo $string1
Ausgabe:
0c11c1a44cbba628769cc1920d22789c 45a84804a7f9f7152911afcd7e8c7b9f 8022dbde82d145705846ad907e5cd507

Ergebnis: Prüfsummen hintereinander getrennt durch Leerzeichen " " ausgegeben, auch wiederum alphabetisch sortiert!

Dabei handelt es sich um einen sortierten String wie auch die Asugabe unter Punkt 3. nur dass jetzt alle Prüfsummen hintereinander durch ein Leerzeichen getrennt ausgegeben werden. Somit entspricht es exakt den gewünschten Anforderungen von @Alfredo123.
 
  • Like
Reaktionen: Alfredo123

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
ok, kann ich nachvollziehen. Mein Denkfehler: Ich hatte das find...-Konstrukt nie allein getestet, sondern immer gleich einer Variablen zugeordnet; und dabei werden aus den Zeilen offensichtlich (automatisch?) Leerzeichen. Deswegen hatte ich geglaubt, das find...-Konstrukt liefert die einzelnen Prüfsummen schon mit Leerzeichen und nicht zeilenweise.
Jetzt hab ichs genau so getestet wie du (ausser, dass ich statt ./ mein $tempDir genommen hab), und komm genau zum gleichen Ergebnis:
Nur find..: Ausgabe zeilenweise, und auch sortiert,
mit der Zuweisung string1= : Ausgabe mit Leerzeichen, sortiert
Wieder danke!
Dass die Zuweisung zu einer Variablen etwas ändert, muss man auch erst einmal wissen...:unsure::unsure:😵😵 Oder hat das etwa mit den "Backticks" zu tun und war folglich so gewollt / provoziert?
 
Zuletzt bearbeitet:

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.558
Punkte für Reaktionen
15
Punkte
64
Dass die Zuweisung zu einer Variablen etwas ändert, muss man auch erst einmal wissen...:unsure::unsure:😵😵 Oder hat das etwa mit den "Backticks" zu tun und war folglich so gewollt / provoziert?
Nein die Backticks haben damit nichts zu tun, diese sind lediglich dafür dass es als gesamter Befehl ausgeführt wird bevor es der Variablen zugewiesen wird. Wie bereits in Post #57 gezeigt:
Dabei kann man die Schreibweise wählen Option 1 mit Backticks oder Option 2 mit $-Klammer Konstrukt.
  1. var=`befehl1 | befehl2`
  2. var=$(befehl1 | befehl2)
Wenn man eine Ausgabe in eine Variable umleitet (zuweist) dann wird die zeilenweise Ausgabe durch Leerzeichen getrennt zusammengefügt.
Dies kann man anhand einer Datei probieren welche einen Satz über mehrere Zeilen enthält.

Beispiel:

Inhalt der Datei:
Code:
Lernen ist wie
Rudern gegen den
Strom. Hört man
damit auf, treibt
man
zurück.
Befehl: string1=`cat datei.txt`; echo $string1

Ausgabe:
Lernen ist wie Rudern gegen den Strom. Hört man damit auf, treibt man zurück.
 
  • Love
Reaktionen: Alfredo123

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
Danke dir für die Erklärung (wieder einmal :D)
Lernen ist wie Rudern gegen den Strom. Hört man damit auf, treibt man zurück
Da bin ich trotz kräftiger Gegenströmung die letzten Tage dank euch (und vor allem auch dir und @DrDeath ) ein ganzes Stück vorwärts gekommen. 😉😉
 
Zuletzt bearbeitet:

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
Kurze Rückmeldung von mir: Nachdem beide Scripte (download und upload) mittlerweile seit 2 Wochen im Produktions-Betrieb aktiv sind: Funktioniert problemlos. Nochmal herzlichen Dank an alle Helfer! (y) (y) (y)
 

DrDeath

Benutzer
Mitglied seit
31. August 2018
Beiträge
39
Punkte für Reaktionen
8
Punkte
14
Website
www.lpi-clan.de
Cool, könntest du das komplette Script dann nochmals anonymisiert bereitstellen?
 

Alfredo123

Benutzer
Mitglied seit
21. Juni 2020
Beiträge
35
Punkte für Reaktionen
0
Punkte
6
ok, hier sind beide Scripte. Beim Download hat sich seit dem letzten allerdings nichts geändert.
Kurze Erklärung zum Upload: Da gibt es sogar 3 Anwender, die Dateien hochladen - sind im Endeffekt Rückmeldungen "Produktion abgeschlossen". Damit diese Rückmeldungen den einzelnen Usern zugeordnet werden können, gibt es jeweils die Verzeichnisse EdifactSend1..3 und EdifactGesendet1..3. Dabei wird der Index (1..3) jeweils nur als Parameter übergeben.
Grüsse
Alfred
 

Anhänge

Zuletzt bearbeitet:

DrDeath

Benutzer
Mitglied seit
31. August 2018
Beiträge
39
Punkte für Reaktionen
8
Punkte
14
Website
www.lpi-clan.de
Vielen Dank, es ist immer wieder interessant zu sehen wie später die Endergebnisse aussehen.
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.