Чи є спосіб зробити віддалений "ls", як "scp", чи віддалену копію?


55

Чи є спосіб зробити віддалений "ls", подібний до "scp", чи віддалена копія в стандартній оболонці Linux?


Я можу бачити, що було б непогано це зробити, але чому б не просто SSH і зробити ls?
SpacemanSpiff

@SpacemanSpiff - Отже, ви можете його скриптувати. Ось як я потрапив на цю сторінку.
wobbily_col

Відповіді:


75

Ви завжди можете це зробити:

ssh user@host ls -l /some/directory

Це дозволить SSH хосту, запустіть ls, скине висновок до вас і негайно відключиться.


2
... якщо у вас є реальний доступ до оболонки. Деякі системи мають спеціальну оболонку, яка може приймати лише певні scpта rsyncдзвінки, можливо sftp, і все.
glglgl

як би ти псевдонім це, скажімо, "rls"?
Морж Кіт

2
@WalrustheCat alias rls="ssh user@host ls -l"Перезавантажте оболонку і rls /some/directoryмає працювати.
чишаку

Єдина проблема з цим полягає в тому, що не знайдений файл повертає код помилки, коли моя причина цього робити саме тому, що я хочу викликати ls.
Стів Коен

Не слідкує за @SteveCohen. Ви хочете код помилки з віддаленого ls? Якщо так, $? містить його відразу після виконання команди. (наприклад, вона повертається 2, якщо я запускаю це [локально чи віддалено] у файлі, який не знайдено)
Corey S.

11

Щоб перерахувати всі файли в каталозі:

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

Щось на кшталт пошуку каталогу / path -ls

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

Якщо rsync не встановлено на хості, то ви отримаєте щось подібне bash: rsync: command not found. Я думаю, це означає, що це використання SSH у фоновому режимі?
mwfearnley

Зауважте, формат подібний до ls -l. У моїй системі, схоже, не існує можливості просто перерахувати файли.
Джонатан

6

Для всіх, хто приходить через Google до цього питання, тому що вони шукають спосіб перелічити віддалені файли, але не можуть отримати доступ до віддаленого сервера через ssh (звичайний випадок для резервних серверів), ви можете використовувати "sftp".

Приклад:

sftp username@hostname.xyz
ls
cd somedir
exit

Почніть інтерактивний сеанс у певному віддаленому каталозі:

sftp [user@]host[:dir]

3

Так. SSH і зробіть ls:

ssh host ls /path

Ви можете легко скриптувати це, щоб бути більш гнучким або використовувати синтаксис host: path scp.


1

Я вважаю, що я найчастіше використовую це для отримання результату ls, простого списку файлів без усіх дозволів та дат тощо, і зберігати його у локальному файлі.

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

Ви можете запускати все, що завгодно, в котируваннях. Весь вихід закінчується у вашому локальному текстовому файлі. Або якщо ви хочете запустити великий серверний скрипт на сервері та захопити всі його результати, навіть помилки:

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

1
У другому рядку коду { }потрібні не потрібні.
glglgl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.