Gibt es eine Möglichkeit, ein Remote-"ls" zu erstellen, ähnlich wie "scp" eine Remote-Kopie erstellt?


55

Gibt es eine Möglichkeit, ein Remote-"ls" zu erstellen, ähnlich wie "scp" eine Remote-Kopie in einer Standard-Linux-Shell?


Ich kann sehen, dass es schön wäre, das zu tun, aber warum nicht einfach SSH rein und ls machen?
SpacemanSpiff

@SpacemanSpiff - So können Sie es skripten. So bin ich auf diese Seite gekommen.
wobbily_col

Antworten:


75

Das könnte man immer machen:

ssh user@host ls -l /some/directory

Dadurch wird SSH an den Host gesendet, ls ausgeführt, die Ausgabe an Sie zurückgesendet und die Verbindung sofort getrennt.


2
... wenn Sie echten Shell-Zugriff haben. Einige Systeme haben eine spezielle Shell, die nur bestimmte scpund rsyncAufrufe akzeptiert , vielleicht sftpauch, und das war's.
Glglgl

Wie würden Sie dies alias "rls" sagen?
Walross the Cat

2
@WalrustheCat Starten Sie alias rls="ssh user@host ls -l"Ihre Shell neu und rls /some/directorysollte funktionieren.
Chishaku

Das einzige Problem dabei ist, dass die nicht gefundene Datei einen Fehlercode zurückgibt, obwohl ich genau deswegen ls aufrufen möchte.
Steve Cohen

@SteveCohen nicht folgen Wünschen Sie den Fehlercode von der Fernbedienung? Wenn ja, $? Enthält es direkt nach der Ausführung des Befehls. (ZB gibt es 2 zurück, wenn ich dies [lokal oder remote] für eine Datei ausführen, die nicht gefunden wird)
Corey S.

11

So listen Sie alle Dateien in einem Verzeichnis auf:

rsync host.name.com:directory/path/'*'

Für so etwas wie find directory / path -ls

rsync -r host.name.com:directory/path

Wenn rsync nicht auf dem Host installiert ist, erhalten Sie so etwas wie bash: rsync: command not found. Ich vermute, dies impliziert, dass SSH im Hintergrund verwendet wird.
Mwfearnley

Beachten Sie, dass das Format ähnlich ist ls -l. Auf meinem System scheint es keine Option zu geben, nur die Dateien aufzulisten.
Jonathan

6

Für alle, die über Google auf diese Frage kommen, weil sie nach einer Möglichkeit suchen, Remote-Dateien aufzulisten, aber nicht über ssh auf den Remote-Server zugreifen können (üblicher Fall für Backup-Server), können Sie 'sftp' verwenden.

Beispiel:

sftp username@hostname.xyz
ls
cd somedir
exit

Starten Sie eine interaktive Sitzung in einem bestimmten Remote-Verzeichnis:

sftp [user@]host[:dir]

3

Ja. SSH und mach ein ls:

ssh host ls /path

Sie können dies einfach mit einem Skript versehen, um die Flexibilität zu erhöhen, oder die Syntax host: path scpverwenden.


1

Ich finde, meine häufigste Verwendung ist es, das Ergebnis zu erhalten, eine einfache Liste von Dateien ohne alle Berechtigungen und Daten und dergleichen, und es in einer lokalen Datei zu speichern.

{ ssh me@host.com "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Sie können innerhalb der Anführungszeichen alles ausführen, was Sie möchten. Alle Ausgaben landen in Ihrer lokalen Textdatei. Oder wenn Sie ein großes unangenehmes Skript auf dem Server ausführen und die gesamte Ausgabe erfassen möchten, auch Fehler:

{ ssh me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
In der 2. Codezeile werden die { }nicht benötigt.
Glglgl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.