Есть ли способ сделать удаленный «ls» так же, как «scp» делает удаленное копирование?

55

Есть ли способ сделать удаленный "ls" так же, как "scp" делает удаленное копирование в стандартной оболочке linux?

Зубайр
источник
Я могу видеть, что было бы неплохо сделать это, но почему бы не просто войти в SSH и сделать ls?
SpacemanSpiff
@SpacemanSpiff - так что вы можете написать это. Вот так я и попал на эту страницу.
wobbily_col

Ответы:

76

Вы всегда можете сделать это:

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, если я запускаю это [локально или удаленно] для файла, который не найден)
Кори С.
11

Чтобы вывести список всех файлов в каталоге:

rsync host.name.com:directory/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]
tobltobs
источник
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
mightypile
источник
1
Во 2-й строке кода { }они не нужны.
glglgl