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?


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.


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

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 username@hostname.xyz
ls
cd somedir
exit

Mulai sesi interaktif di direktori jarak jauh tertentu:

sftp [user@]host[:dir]

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.


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 me@host.com "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 me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
Di baris kode 2, { }tidak diperlukan.
glglgl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.