我正在编写一个 shell 脚本,我必须通过 shell 脚本删除远程计算机上的文件。
手动工作流程:
- 登录到远程机器:
ssh [email protected]
- 在远程计算机 (
domain
) 上,键入以下命令cd ./some/where rm some_file.war
我应该如何在脚本中完成该任务?
答案1
您可以通过将命令附加到 SSH 命令来向 SSH 客户端传递要执行的命令,以代替启动 shell。
ssh [email protected] 'rm /some/where/some_file.war'
cd
只要指定完整路径,您就不必到某个位置来删除某些内容,因此这是您可以跳过的另一个步骤。
下一个问题是身份验证。如果您只是运行它,系统会提示您输入密码。如果您不想以交互方式输入此内容,则应该设置公钥身份验证。
答案2
如果你想使用 sudo 删除远程文件,你需要执行如下命令:
ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)
细节。
答案3
ssh 命令有一个命令参数(命令中的最后一个参数),可用于运行远程命令。
答案4
设置无密码密钥,然后添加该命令作为 ssh 命令的一部分。看:http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/