Có cách nào để làm một điều khiển từ xa không giống như Scp tinh không?


55

Có cách nào để làm một "ls" từ xa giống như "scp" sao chép từ xa trong một vỏ linux tiêu chuẩn không?


Tôi có thể thấy thật tuyệt khi làm điều này, nhưng tại sao không chỉ SSH vào và làm một ls?
SpacemanSpiff

@SpacemanSpiff - Vì vậy, bạn có thể viết kịch bản. Đó là cách tôi đến trang này.
wobbily_col

Câu trả lời:


75

Bạn luôn có thể làm điều này:

ssh user@host ls -l /some/directory

Điều đó sẽ SSH đến máy chủ, chạy ls, kết xuất lại cho bạn và ngắt kết nối ngay lập tức.


2
... Nếu bạn có quyền truy cập shell thực sự. Một số hệ thống có lớp vỏ đặc biệt sẽ chỉ chấp nhận một số cuộc gọi nhất định scprsynccó thể sftplà như vậy.
glglgl

Làm thế nào bạn có bí danh này để nói, "rls"?
Walrus the Cat

2
@WalrustheCat alias rls="ssh user@host ls -l"Khởi động lại vỏ của bạn và rls /some/directorysẽ hoạt động.
chishaku

Vấn đề duy nhất với điều này là không tìm thấy tệp trả về mã lỗi, khi lý do của tôi để làm điều đó chính xác là lý do tại sao tôi muốn gọi ls.
Steve Cohen

Không theo dõi @SteveCohen. Bạn có muốn mã lỗi từ ls từ xa? Nếu vậy, $? chứa nó ngay sau khi bạn thực hiện lệnh. (ví dụ: nó trả về 2 nếu tôi chạy nó [cục bộ hoặc từ xa] trên một tệp không tìm thấy)
Corey S.

11

Để liệt kê tất cả các tệp trong một thư mục:

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

Đối với một cái gì đó như tìm thư mục / đường dẫn -ls

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

Nếu rsync không được cài đặt trên máy chủ, thì bạn sẽ có được thứ gì đó như thế bash: rsync: command not found. Tôi đoán điều này ngụ ý rằng nó sử dụng SSH trong nền?
mwfearnley

Lưu ý định dạng tương tự ls -l. Trên hệ thống của tôi, có vẻ như không có tùy chọn nào để liệt kê các tệp.
Jonathan

6

Đối với tất cả mọi người thông qua google cho câu hỏi này vì họ đang tìm cách liệt kê các tệp từ xa nhưng không thể truy cập máy chủ từ xa qua ssh (trường hợp phổ biến cho các máy chủ dự phòng), bạn có thể sử dụng 'sftp'.

Thí dụ:

sftp username@hostname.xyz
ls
cd somedir
exit

Bắt đầu một phiên tương tác trong một thư mục từ xa cụ thể:

sftp [user@]host[:dir]

3

Đúng. SSH và thực hiện ls:

ssh host ls /path

Bạn có thể dễ dàng tập lệnh này để linh hoạt hơn hoặc sử dụng cú pháp host: path scpsử dụng.


1

Tôi thấy việc sử dụng thường xuyên nhất của tôi là lấy kết quả ls, một danh sách đơn giản các tệp mà không có tất cả các quyền và ngày, v.v. và giữ nó trong một tệp cục bộ.

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

Bạn có thể chạy bất cứ điều gì bạn muốn trong dấu ngoặc kép. Tất cả đầu ra kết thúc trong tệp văn bản địa phương của bạn. Hoặc nếu bạn muốn chạy một tập lệnh khó chịu lớn trên máy chủ và nắm bắt tất cả đầu ra của nó, thậm chí có lỗi:

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

1
Trong dòng mã thứ 2, { }không cần thiết.
glglgl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.