Есть ли способ сделать удаленную "ls" так же, как "scp" делает удаленную копию в стандартной оболочке Linux?
Вы всегда могли сделать это:
ssh user@host ls -l /some/directory
Это подключит SSH к хосту, запустит ls, вернет вам вывод и немедленно отключится.
Чтобы вывести список всех файлов в каталоге:
rsync host.name.com:directory/path/'*'
Для чего-то вроде найти каталог / путь -ls
rsync -r host.name.com:directory/path
Для всех, кто приходит через Google к этому вопросу, потому что они ищут способ перечислить удаленные файлы, но не могут получить доступ к удаленному серверу через ssh (общий случай для серверов резервного копирования), вы можете использовать sftp.
Пример:
sftp username@hostname.xyz
ls
cd somedir
exit
Запустите интерактивный сеанс в определенном удаленном каталоге:
sftp [user@]host[:dir]
Да. SSH и выполните ls
:
ssh host ls /path
Вы можете легко создать сценарий для большей гибкости или использовать синтаксис host: path scp
использует.
Я считаю, что чаще всего я использую это, чтобы получить результат 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