非交互式SSH登录下远程删除文件遇问题求助
问题分析与解决
哦,我一眼就发现问题所在啦——你在sshpass命令里漏掉了ssh这个核心指令!
错误原因
sshpass本身并不是用来直接连接服务器的工具,它的作用是给ssh命令自动提供密码。所以它的正确语法是:sshpass [选项] ssh [ssh的参数和命令]。你刚才的命令里,在sshpass -p 'password'之后直接写了username@ip,系统会把username@ip当成一个要执行的命令,自然找不到这个文件/命令,就报了"No such file or directory"。
正确命令
把ssh加回去就可以正常执行了:
sshpass -p 'password' ssh username@ip rm -f fullpath/file.txt
额外注意事项
- 如果你的密码里包含特殊字符(比如
!、$、*这类shell会解析的符号),建议用双引号包裹密码,或者更安全的方式是把密码写到一个文件里(比如echo "your_password" > pass.txt),然后用sshpass -f pass.txt ssh username@ip ...,避免特殊字符被shell转义导致密码错误。 - 虽然你用常规ssh能执行删除,但还是要确认目标服务器上的
fullpath/file.txt确实存在,且你的username拥有该文件的删除权限。
内容的提问来源于stack exchange,提问作者Bar Cohen
相关产品推荐
相关产品推荐

