Apakah ada cara untuk melakukan remote "ls" seperti "scp" melakukan copy jarak jauh?

55

Apakah ada cara untuk melakukan remote "ls" seperti "scp" melakukan copy jarak jauh dalam shell linux standar?

Zubair
sumber
Saya bisa melihat itu akan baik untuk melakukan ini, tetapi mengapa tidak hanya SSH dan melakukan ls?
SpacemanSpiff
@SpacemanSpiff - Jadi Anda bisa skrip itu. Begitulah cara saya sampai di halaman ini.
wobbily_col

Jawaban:

76

Anda selalu bisa melakukan ini:

ssh user@host ls -l /some/directory

Itu akan SSH ke host, jalankan ls, buang output kembali kepada Anda dan segera putuskan.

Corey S.
sumber
2
... jika Anda memiliki akses shell nyata. Beberapa sistem memiliki shell khusus yang hanya akan menerima tertentu scpdan rsyncpanggilan, mungkin sftpjuga, dan hanya itu.
glglgl
bagaimana Anda akan menambahkan ini ke, katakanlah, "rls"?
Walrus the Cat
2
@ WalrustheCat alias rls="ssh user@host ls -l"Mulai ulang shell Anda dan rls /some/directoryakan bekerja.
chishaku
Satu-satunya masalah dengan ini adalah bahwa file tidak ditemukan mengembalikan kode kesalahan, ketika alasan saya melakukannya justru mengapa saya ingin memanggil ls.
Steve Cohen
Tidak mengikuti @SteveCohen. Apakah Anda menginginkan kode kesalahan dari remote ls? Jika ya, $? Mengandungnya tepat setelah Anda menjalankan perintah. (misalnya mengembalikan 2 jika saya menjalankan ini [secara lokal atau jarak jauh] pada file yang tidak ditemukan)
Corey S.
11

Untuk membuat daftar semua file dalam direktori:

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

Untuk sesuatu seperti temukan direktori / path -l

rsync -r host.name.com:directory/path
Black Rock Onyx
sumber
Jika rsync tidak diinstal pada host, maka Anda mendapatkan sesuatu seperti bash: rsync: command not found. Saya kira ini berarti menggunakan SSH di latar belakang?
mwfearnley
Perhatikan formatnya mirip dengan ls -l. Di sistem saya, sepertinya tidak ada opsi untuk hanya daftar file.
Jonathan
6

Untuk semua yang datang melalui google ke pertanyaan ini karena mereka mencari cara untuk membuat daftar file jarak jauh tetapi tidak dapat mengakses server jauh melalui ssh (kasus umum untuk server cadangan) Anda dapat menggunakan 'sftp'.

Contoh:

sftp [email protected]
ls
cd somedir
exit

Mulai sesi interaktif di direktori jarak jauh tertentu:

sftp [user@]host[:dir]
tobltobs
sumber
3

Iya. SSH dan lakukan ls:

ssh host ls /path

Anda dapat dengan mudah membuat skrip ini agar lebih fleksibel, atau menggunakan host: sintaks jalur scpdigunakan.

Andrew M.
sumber
1

Saya menemukan saya paling sering menggunakan ini untuk mendapatkan hasil ls, daftar file sederhana tanpa semua izin dan tanggal dan semacamnya, dan menyimpannya di file lokal.

{ ssh [email protected] "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Anda dapat menjalankan apa pun yang Anda inginkan dalam tanda kutip. Semua output berakhir di file teks lokal Anda. Atau jika Anda ingin menjalankan skrip jahat besar di server dan menangkap semua hasilnya, bahkan kesalahan:

{ ssh [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
mungkin
sumber
1
Di baris kode 2, { }tidak diperlukan.
glglgl