Как удалить файл на удаленной машине через SSH с помощью Shell Script?


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искать место, чтобы что-то удалить, пока вы указываете полный путь, так что это еще один шаг, который вы можете пропустить.

Следующий вопрос - аутентификация. Если вы просто запустите это, вам будет предложено ввести пароль. Если вы не хотите вводить это в интерактивном режиме, вы должны настроить аутентификацию с помощью публичного ключа.


3
Я думал, что -c был cipher_spec - нет? Я не думал, что -c был необходим для передачи команд.
Скотт С Уилсон

Спасибо всем вам, ребята, за быстрые ответы. Этот ответ содержал большинство частей решения, поэтому @Caleb на этот раз отметили.
Мика

Должны ли мы добавить -fк rmвыполнению удаленного вызова?
Федир РИХТИК

1
@ Федир НЕТ! В частности, вопрос касается файлов, а не каталогов, и если есть какие-либо предупреждения или ошибки, вызванные rmими, безусловно, следует передать вызывающей стороне, если пользователь не знает, чего ожидать и почему он что-то переопределяет. Множество ошибок и разочаровывающих отладок позже можно избежать, используя только те опции, которые вам нужны в данном сенарио.
Калеб

1
@Fedir Параметр -fдля rmявляется коротким --forceи влияет на то, есть ли ошибки для несуществующих файлов или фиктивных аргументов. Обычно команды, выполняемые в неинтерактивных оболочках, по умолчанию все равно являются менее интерактивными, но это не так, или вы получаете интерактивное приглашение, и вам нужно будет исправить настройки, непосредственно связанные с этим. Если вы пишете этот сценарий, у вас все равно не должно быть этой проблемы, и если вы находитесь в интерактивной оболочке (где у вас есть возможность катастрофических опечаток), вы должны использовать -Ion, --interactive=neverчтобы установить желаемое поведение.
Калеб


2

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.