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?

Zubair
la source
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.

Corey S.
la source
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
Black Rock Onyx
la source
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 [email protected]
ls
cd somedir
exit

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

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

Andrew M.
la source
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 [email protected] "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 [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
pourrait-t-il
la source
1
Dans la 2ème ligne de code, les { }ne sont pas nécessaires.
Glglgl