So verwenden Sie das Muster des Shell -Skriptsuche aus der Ferne
-
12-09-2019 - |
Frage
Ich muss SCP -Aktualisierung eines Verzeichnisses auf einem anderen Server verwenden. Das ist vergleichbar mit
for i in /usr/some/???/unknown/dir
do
cp /usr/some/file $i
done
Wie kann ich die Suche durchführen, während sich die Zielverzeichnisse auf einem anderen Server befinden?
Danke
Lösung
for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
scp user@otherhost:/usr/some/dir/$i .
done
Der Fund ist das, wonach Sie suchen, denke ich ...
Andere Tipps
Jeder vergisst, Räume in Dateinamen zu verarbeiten: P.
Um das Beispiel von LB wiederzuverwenden:
OLD_IFS=$IFS
IFS=$\'n'
for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
scp user@otherhost:"/usr/some/dir/$i" .
done
IFS=$OLD_IFS
Dies wird über jede Ausgangszeile anstelle jedes Wortes (und $ i wird angegeben) geleitet.
for i in `ssh user@otherhost ls /usr/some/dir/`
do
scp user@otherhost:/usr/some/dir/$i .
done
Wenn Sie auf dem Remote -Server einen Shell -Zugriff haben, erstellen Sie eine Liste der Verzeichnisse aus der Ferne (mit Find oder LS oder was auch immer Sie in Ihrem Shell -Skript verwenden würden) und kopieren Sie ihn wieder in das System, von dem Sie kopieren. Dann können Sie verwenden
for d in file_of_remote_dirs; do
scp /usr/some/file remote_machine:d;
done