Làm cách nào để xóa một tệp trên máy từ xa thông qua SSH bằng cách sử dụng Shell Script?


32

Tôi đang viết Shell Script trong đó tôi phải xóa một tệp trên máy từ xa thông qua Shell Script.

Lưu lượng thủ công:

ssh username@domain.com

.. sau đó tại miền:

cd ./some/where
rm some_file.war

Làm thế nào để hoàn thành nhiệm vụ đó?

Câu trả lời:


49

Bạn có thể truyền cho sshkhách hàng một lệnh để thực thi thay cho việc khởi động shell bằng cách gắn nó vào lệnh ssh.

ssh username@domain.com 'rm /some/where/some_file.war'

Bạn không phải đến cdmột vị trí để xóa một cái gì đó miễn là bạn chỉ định đường dẫn đầy đủ, vì vậy đó là một bước khác bạn có thể bỏ qua.

Câu hỏi tiếp theo là xác thực. Nếu bạn chỉ chạy nó, bạn sẽ được nhắc nhập mật khẩu. Nếu bạn không muốn nhập tương tác này, bạn nên thiết lập xác thực khóa công khai.


3
Tôi nghĩ rằng -c là cext_spec - không? Tôi không nghĩ -c là cần thiết để truyền lệnh.
Scott C Wilson

Cảm ơn tất cả các bạn đã trả lời nhanh chóng. Câu trả lời này là câu trả lời chứa hầu hết các phần của giải pháp để @Caleb đánh dấu lần này.
mico

Chúng ta có nên thêm -fđể rmthực hiện cuộc gọi từ xa?
Fedir RYKHTIK

1
@Fedir KHÔNG! Câu hỏi đặc biệt hỏi về các tệp không phải là thư mục và nếu có bất kỳ cảnh báo hoặc lỗi nào được gửi bởi rmhọ chắc chắn sẽ được chuyển cho người gọi trừ khi người dùng biết những gì mong đợi và tại sao họ lại ghi đè lên một cái gì đó. Rất nhiều lỗi và gỡ lỗi sau này có thể tránh được bằng cách chỉ sử dụng các tùy chọn bạn cần trong một senario nhất định.
Caleb

1
@Fedir -fTùy chọn rmviết tắt --forcevà có ảnh hưởng đến việc liệu các lỗi có xuất hiện đối với các tệp không tồn tại hoặc đối số không có thật hay không. Thông thường các lệnh chạy trên các shell không tương tác mặc định là ít tương tác hơn, nhưng dù sao thì bạn không hoặc bạn đang nhận được một dấu nhắc tương tác, điều cần làm là sửa các cài đặt liên quan trực tiếp đến điều đó. Nếu bạn đang kịch bản này, bạn không nên có vấn đề mà dù sao, và nếu bạn đang ở trong một vỏ tương tác (nơi bạn có khả năng xảy ra lỗi chính tả nghiêm trọng), bạn nên sử dụng -Itrên --interactive=neverthiết hành vi mong muốn của bạn.
Caleb

3

Nếu bạn muốn xóa tệp từ xa bằng cách sử dụng sudo, bạn cần thực thi một cái gì đó như thế này:

ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)

Chi tiết .


2

Lệnh ssh có một tham số lệnh (tham số cuối cùng trong lệnh) mà bạn có thể sử dụng để chạy các lệnh từ xa.


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.