Shell 脚本问题 运行 使用 SSH 远程命令
Shell Script Issue Running Command Remotely using SSH
我有一个部署脚本,我想在其中清除 CDN 的缓存。当我在服务器上并且 运行 我的脚本一切正常时,但是当我 SSH 进入并且 运行 只有那个文件时(即实际上没有进入服务器, cd
ing 进入目录并 运行ning 它)它失败并指出找不到我的 doctl
命令。 这似乎只是这个程序在 ssh 上的问题,运行ning systemctl --help 工作正常。
请注意,我已经使用 sudo snap install doctl
安装了 Digital Ocean 的 doctl
,它就在那里。
这是 .sh
文件(减去注释):
#!/bin/sh
doctl compute cdn flush [MYID] --files [*] # static cache
所以我不确定是什么问题。有人有想法吗?
同样,如果我进入服务器并且 运行 文件一切正常,但这是我使用的 SSH 命令 returns 错误:
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
所在的位置(即在用户中bin) 或确保使用在命令前面添加 /snap/bin/
的绝对路径调用命令。
我有一个部署脚本,我想在其中清除 CDN 的缓存。当我在服务器上并且 运行 我的脚本一切正常时,但是当我 SSH 进入并且 运行 只有那个文件时(即实际上没有进入服务器, cd
ing 进入目录并 运行ning 它)它失败并指出找不到我的 doctl
命令。 这似乎只是这个程序在 ssh 上的问题,运行ning systemctl --help 工作正常。
请注意,我已经使用 sudo snap install doctl
安装了 Digital Ocean 的 doctl
,它就在那里。
这是 .sh
文件(减去注释):
#!/bin/sh
doctl compute cdn flush [MYID] --files [*] # static cache
所以我不确定是什么问题。有人有想法吗?
同样,如果我进入服务器并且 运行 文件一切正常,但这是我使用的 SSH 命令 returns 错误:
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
所在的位置(即在用户中bin) 或确保使用在命令前面添加 /snap/bin/
的绝对路径调用命令。