Y at-il un moyen de faire une "ls" à distance un peu comme "scp" une copie à distance?


55

Y a-t-il un moyen de faire une "ls" distante un peu comme "scp" une copie distante dans un shell linux standard?


Je peux voir que ce serait bien de faire cela, mais pourquoi ne pas simplement SSH et faire un ls?
SpacemanSpiff

@SpacemanSpiff - Vous pouvez donc le scripter. Voilà comment je suis arrivé à cette page.
wobbily_col

Réponses:


76

Vous pouvez toujours faire ça:

ssh user@host ls -l /some/directory

Cela va relier SSH à l'hôte, exécuter ls, vider la sortie et vous déconnecter immédiatement.


2
... si vous avez un accès réel au shell. Certains systèmes ont un shell spécial qui n'acceptera que certains appels scpet rsyncappels, peut-être sftpaussi, et c'est tout.
Glglgl

comment voulez-vous alias ceci pour dire, "rls"?
Walrus le chat

2
@WalrustheCat alias rls="ssh user@host ls -l"Redémarrez votre shell et rls /some/directorydevrait fonctionner.
Chishaku

Le seul problème avec ceci est que le fichier non trouvé renvoie un code d'erreur, alors que c'est précisément pour cette raison que je veux appeler ls.
Steve Cohen

Ne suit pas @SteveCohen. Voulez-vous le code d'erreur de la télécommande ls? Si oui, $? le contient juste après l'exécution de la commande. (Par exemple, il retourne 2 si j'exécute cette [localement ou à distance] sur un fichier introuvable.)
Corey S.

11

Pour lister tous les fichiers d'un répertoire:

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

Pour quelque chose comme find directory / path -ls

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

Si rsync n'est pas installé sur l'hôte, vous obtenez quelque chose comme bash: rsync: command not found. Je suppose que cela implique qu'il utilise SSH en arrière-plan?
mwfearnley

Notez que le format est similaire à ls -l. Sur mon système, il ne semble pas qu'il existe une option permettant de simplement répertorier les fichiers.
Jonathan

6

Pour tous ceux qui viennent via google à cette question car ils cherchent un moyen de répertorier les fichiers distants mais ne peuvent pas accéder au serveur distant via ssh (cas habituel des serveurs de sauvegarde), vous pouvez utiliser 'sftp'.

Exemple:

sftp username@hostname.xyz
ls
cd somedir
exit

Démarrer une session interactive dans un répertoire distant spécifique:

sftp [user@]host[:dir]

3

Oui. SSH et faire un ls:

ssh host ls /path

Vous pouvez facilement écrire un script pour plus de souplesse ou utiliser la syntaxe host: path scp.


1

Je trouve que mon utilisation la plus fréquente consiste à obtenir le résultat ls, une simple liste de fichiers sans toutes les autorisations et les dates, etc., et à le conserver dans un fichier local.

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

Vous pouvez exécuter tout ce que vous voulez dans les guillemets. Toutes les sorties se retrouvent dans votre fichier texte local. Ou si vous voulez exécuter un gros script méchant sur le serveur et capturer toutes ses sorties, même les erreurs:

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

1
Dans la 2ème ligne de code, les { }ne sont pas nécessaires.
Glglgl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.