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?

Zubair
quelle
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.

Corey S.
quelle
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
Schwarzer Felsen-Onyx
quelle
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 [email protected]
ls
cd somedir
exit

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

sftp [user@]host[:dir]
tobltobs
quelle
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.

Andrew M.
quelle
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 [email protected] "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 [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
mächtigstapel
quelle
1
In der 2. Codezeile werden die { }nicht benötigt.
Glglgl