Shell脚本问题使用SSH远程运行命令



我有一个部署脚本,我想在其中清除CDN的缓存。当我在服务器上运行脚本时,一切都很好,但当我SSH进入并仅运行该文件时(即,没有真正进入服务器,cd进入目录并运行它(,它会失败,并表示找不到我的doctl命令这似乎只是这个程序在ssh上的问题,运行systemctl-help可以正常工作

请注意,我已经使用sudo snap install doctl安装了Digital Ocean的doctl,它就在那里。

这是.sh文件(减去注释(:

#!/bin/sh
doctl compute cdn flush [MYID]  --files [*]   # static cache

所以我不确定问题出在哪里。有人知道吗?

同样,如果我进入服务器并运行文件,一切都会正常,但我使用的SSH命令会返回错误:

ssh root@123.45.678.999 "/deploy/clear_digital_ocean_cache.sh"

这就是错误。

/deploy/clear_digital_ocean_cache.sh: 10: doctl: not found

一个解决方案是将命令更改为.sh文件中的绝对路径,如下所示:

#!/bin/sh
/snap/bin/doctl compute cdn flush [MYID]  --files [*]   # static cache

我意识到我可以用ssh(如systemctl(运行我的用户命令,所以它要么改变doctl的位置(即在用户仓中(,要么确保使用在命令前面添加/snap/bin/的绝对路径来调用命令。

最新更新