如何使用Shell脚本通过SSH删除远程计算机上的文件?


32

我正在编写一个Shell脚本,其中必须通过Shell脚本删除远程计算机上的文件。

手动流程:

ssh username@domain.com

..然后在域:

cd ./some/where
rm some_file.war

如何完成这项任务?

Answers:


49

您可以通过将ssh附加到ssh命令的命令传递给客户端,以代替启动外壳程序执行命令。

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

你不用 cd只要指定完整路径,到某个位置删除某些东西,因此可以跳过另一步。

下一个问题是身份验证。如果仅运行该命令,则将提示您输入密码。如果您不想以交互方式输入此密码,则应设置公共密钥身份验证。


3
我以为-c是cipher_spec-不?我不认为-c是传递命令所必需的。
Scott C Wilson

谢谢大家的快速解答。这个答案是包含解决方案大部分内容的答案,因此@Caleb这次获得了成功。
mico 2011年

我们应该添加-frm执行远程调用?
Fedir RYKHTIK 2014年

1
@Fedir不!该问题专门询问有关文件而不是目录的问题,rm除非用户知道期望什么以及为什么它们覆盖某些内容,否则肯定将它们引发的任何警告或错误传递给调用方。仅使用给定Senario中所需的选项,就可以避免以后出现许多错误和令人沮丧的调试。
卡勒布(Caleb)2014年

1
@Fedir -f选项to rm的缩写,--force对不存在的文件或伪参数是否抛出错误产生影响。通常,在非交互式shell上运行的命令默认情况下无论如何都是较少交互的,但是如果不是这样,或者您收到交互式提示,则要做的是修复与之直接相关的设置。如果您正在编写脚本,则无论如何都不会出现该问题,并且如果您位于交互式外壳中(您可能会遇到灾难性的错别字),则应继续使用-I--interactive=never来设置所需的行为。
Caleb



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.