Ответы:
Вы можете передать ssh
клиенту команду для выполнения вместо запуска оболочки, добавив ее в команду ssh.
ssh username@domain.com 'rm /some/where/some_file.war'
Вам не нужно cd
искать место, чтобы что-то удалить, пока вы указываете полный путь, так что это еще один шаг, который вы можете пропустить.
Следующий вопрос - аутентификация. Если вы просто запустите это, вам будет предложено ввести пароль. Если вы не хотите вводить это в интерактивном режиме, вы должны настроить аутентификацию с помощью публичного ключа.
-f
к rm
выполнению удаленного вызова?
rm
ими, безусловно, следует передать вызывающей стороне, если пользователь не знает, чего ожидать и почему он что-то переопределяет. Множество ошибок и разочаровывающих отладок позже можно избежать, используя только те опции, которые вам нужны в данном сенарио.
-f
для rm
является коротким --force
и влияет на то, есть ли ошибки для несуществующих файлов или фиктивных аргументов. Обычно команды, выполняемые в неинтерактивных оболочках, по умолчанию все равно являются менее интерактивными, но это не так, или вы получаете интерактивное приглашение, и вам нужно будет исправить настройки, непосредственно связанные с этим. Если вы пишете этот сценарий, у вас все равно не должно быть этой проблемы, и если вы находитесь в интерактивной оболочке (где у вас есть возможность катастрофических опечаток), вы должны использовать -I
on, --interactive=never
чтобы установить желаемое поведение.
Если вы хотите удалить удаленный файл с использованием sudo, вам нужно выполнить что-то вроде этого:
ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)
У команды ssh есть параметр команды (последний параметр в команде), который вы можете использовать для запуска удаленных команд.
Настройте ключи без пароля, затем добавьте команду как часть команды ssh. См .: http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/