Як видалити файл на віддаленій машині через SSH за допомогою сценарію Shell?


32

Я пишу сценарій оболонки, де мені потрібно видалити файл на віддаленій машині через скрипт оболонки.

Потік вручну:

ssh username@domain.com

.. тоді в домені:

cd ./some/where
rm some_file.war

Як виконати це завдання?

Відповіді:


49

Ви можете передати sshклієнту команду для виконання замість запуску оболонки, додавши її до команди ssh.

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

Не потрібно до cdмісця, щоб щось видалити, поки ви вказали повний шлях, тож ще один крок, який ви можете пропустити.

Наступне питання - автентифікація. Якщо ви просто запустите це, вам буде запропоновано ввести пароль. Якщо ви не хочете вводити це інтерактивно, вам слід налаштувати аутентифікацію publickey.


3
Я думав -c був cipher_spec - ні? Я не думав, що -c потрібен для передачі команди.
Скотт C Вілсон

Дякую всім вам, хлопці, за швидкі відповіді. Ця відповідь була такою, яка містить більшість частин рішення, тому @Caleb цього разу отримав галочку.
mico

Чи слід додати -fдо rmвиконання віддаленого дзвінка?
Федір РИХТИК

1
@Fedir НІ! Питання стосується конкретно файлів, а не каталогів, і якщо є якісь попередження або помилки, rmвони, безумовно, повинні бути передані абоненту, якщо користувач не знає, чого очікувати і чому вони щось перекривають. Пізніше помилок та розчарувальної налагодження можна уникнути, лише скориставшись потрібними параметрами в даному сенаріо.
Калеб

1
@Fedir -fОпція до rmскороченої --forceта впливає на те, чи не є помилки для неіснуючих файлів або фальшивих аргументів. Зазвичай команди виконуються за неінтерактивними оболонками за замовчуванням, щоб все-таки бути менш інтерактивними, але це не так, або ви отримуєте інтерактивну підказку, що потрібно зробити, щоб виправити налаштування, безпосередньо пов’язані з цим. Якщо ви сценарії це ви не повинні мати це питання в будь-якому випадку, і якщо ви перебуваєте в інтерактивній оболонці (де у вас є можливість катастрофічних помилок) , ви повинні використовувати -Iна , --interactive=neverщоб встановити бажану поведінку.
Калеб


2

У команді ssh є параметр команди (останній параметр у команді), який можна використовувати для запуску віддалених команд.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.