มีวิธีทำรีโมต“ ls” เหมือนกับรีโมต“ scp” หรือไม่?


55

มีวิธีการทำ "ls" ระยะไกลเหมือน "scp" ทำสำเนาระยะไกลในเปลือก linux มาตรฐานหรือไม่


ฉันเห็นได้ว่าการทำเช่นนี้ดี แต่ทำไมไม่ใช่แค่ SSH และทำ ls?
SpacemanSpiff

@SpacemanSpiff - เพื่อให้คุณสามารถสคริปต์ นั่นคือวิธีที่ฉันได้มาที่หน้านี้
wobbily_col

คำตอบ:


75

คุณสามารถทำสิ่งนี้ได้เสมอ:

ssh user@host ls -l /some/directory

นั่นจะ SSH ไปยังโฮสต์, รัน ls, ดัมพ์เอาต์พุตกลับไปหาคุณและตัดการเชื่อมต่อทันที


2
... หากคุณมีสิทธิ์เข้าถึงเชลล์จริง ระบบบางระบบมีเชลล์พิเศษซึ่งจะยอมรับเฉพาะscpและการrsyncโทรเท่านั้นและอาจsftpเป็นเช่นนั้น
glglgl

คุณจะตั้งชื่อแทนสิ่งนี้ให้พูด "rls" ได้อย่างไร
Walrus the Cat

2
@WalrustheCat alias rls="ssh user@host ls -l"รีสตาร์ทเชลล์และrls /some/directoryควรใช้งานได้
chishaku

ปัญหาเดียวของไฟล์นี้คือไม่พบไฟล์ที่ส่งคืนรหัสข้อผิดพลาดเมื่อเหตุผลของฉันในการทำมันคือเหตุผลที่ฉันต้องการโทรหา ls
Steve Cohen

ไม่ได้ติดตาม @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รูปแบบจะคล้ายกับ ในระบบของฉันมันดูไม่เหมือนมีตัวเลือกเพียงแค่รายการไฟล์
Jonathan

6

สำหรับทุกคนที่มาจาก google สำหรับคำถามนี้เพราะพวกเขากำลังมองหาวิธีที่จะแสดงรายการไฟล์ระยะไกล แต่ไม่สามารถเข้าถึงเซิร์ฟเวอร์ระยะไกลผ่าน ssh (กรณีทั่วไปสำหรับเซิร์ฟเวอร์สำรอง) คุณสามารถใช้ 'sftp'

ตัวอย่าง:

sftp username@hostname.xyz
ls
cd somedir
exit

เริ่มเซสชันการโต้ตอบในไดเรกทอรีระยะไกลเฉพาะ:

sftp [user@]host[:dir]

3

ใช่. SSH และทำls:

ssh host ls /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

1
ในบรรทัดรหัสที่ 2 { }ไม่จำเป็นต้องใช้
glglgl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.