Uzak bir kopya gibi "scp" gibi bir uzaktan "ls" yapmak için bir yolu var mı?


55

Uzak bir "ls" gibi "scp" gibi standart bir linux kabuğundaki bir uzak kopya yapmak için bir yolu var mı?


Bunu yapmanın iyi olacağını görebiliyorum, ama neden sadece SSH girip bir ls yapmıyorsunuz?
SpacemanSpiff

@ SpacemanSpiff - Böylece komut dosyası olabilir. Bu sayfaya böyle geldim.
wobbily_col

Yanıtlar:


75

Bunu her zaman yapabilirsin:

ssh user@host ls -l /some/directory

Bu, ana makineye SSH gönderecek, ls çalıştıracak, çıktıyı size geri bırakacak ve derhal bağlantı kesilecek.


2
... eğer gerçek bir kabuk erişiminiz varsa. Bazı sistemler sadece kesin olarak kabul edecek özel bir kabuğa scpve rsynchatta belki sftpde çağrılara sahiptir.
glglgl

"rls" demek için bunu nasıl adlandırırsın?
Kedi Walrus

2
@WalrustheCat Kabuğunuzu alias rls="ssh user@host ls -l"yeniden başlatın ve rls /some/directoryçalışması gerekir.
chishaku

Bununla ilgili tek sorun, bulunamayan dosyanın bir hata kodu döndürmesidir, bunu yapmaktaki sebebim tam olarak neden ls'yi çağırmak istediğimdir.
Steve Cohen,

@SteveCohen takip etmiyor. Hata kodunu uzaktaki ls'den mi istiyorsun? Eğer öyleyse, $? komutu çalıştırdıktan hemen sonra içerir. (örneğin, bu [yerel olarak veya uzaktan] bulunamayan bir dosyada çalıştırırsam 2 değerini döndürür)
Corey S.

11

Bir dizindeki tüm dosyaları listelemek için:

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

Dizin / yol -ls bulmak gibi bir şey için

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

Eğer ana makineye rsync kurulmamışsa, bunun gibi bir şey elde edersiniz bash: rsync: command not found. Sanırım bu arka planda SSH kullandığı anlamına mı geliyor?
mwfearnley

Formatın benzer olduğuna dikkat edin ls -l. Sistemimde, sadece dosyaları listelemek için bir seçenek var gibi görünmüyor.
Jonathan,

6

Uzaktakileri listelemek için bir yol aradıkları için, ancak bu soruya google üzerinden gelenler için 'sftp' kullanabilirsiniz.

Örnek:

sftp username@hostname.xyz
ls
cd somedir
exit

Belirli bir uzak dizinde etkileşimli bir oturum başlatmak:

sftp [user@]host[:dir]

3

Evet. SSH ve bir yap ls:

ssh host ls /path

Daha esnek olması için kolayca komut dosyasını yazabilir veya host: path sözdizimini scpkullanmaktadır.


1

Bunu en sık kullanmamı, ls sonucunu elde etmek, tüm izinleri ve tarihleri ​​ve benzeri olmayan basit bir dosya listesini bulmak ve yerel bir dosyada tutmaktır.

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

İstediğiniz herhangi bir şeyi tırnak içinde çalıştırabilirsiniz. Tüm çıktılar yerel metin dosyanızda bitiyor. Veya sunucuda kötü bir komut dosyası çalıştırmak ve tüm çıktılarını, hatta hatalarını yakalamak istiyorsanız:

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

1
2. kod satırında, { }gerekli değildir.
glglgl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.