You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器下无法通过Ansible运行.sh脚本的问题咨询

问题排查与解决

你的Ansible script 模块执行失败,核心问题出在Shell脚本的shebang(解释器指定行)写错了,这个小错误导致远程服务器找不到脚本的执行解释器,进而抛出了容易误导人的“脚本未找到”错误。

具体问题所在

看你的play.sh第一行:

#!bin/sh

这里漏掉了开头的斜杠/,正确的写法必须使用绝对路径:

#!/bin/sh

当远程服务器尝试执行这个脚本时,会严格按照shebang里的路径去寻找解释器,但bin/sh是相对路径,系统根本找不到这个位置,就会返回“not found”——注意,这个错误提示说的不是脚本文件找不到,而是它要调用的解释器找不到,很容易让人搞错方向。

为什么手动copy后执行能成功?

你提到先copy脚本到服务器再手动执行是成功的,这是因为手动执行时你相当于绕开了shebang的问题:

  • 如果你是用sh play.sh这种方式执行,是主动指定了sh解释器,脚本里错误的shebang会被直接忽略;
  • 就算你用./play.sh执行,可能当时你已经给脚本加了执行权限,但如果是通过当前shell直接运行,服务器的默认环境刚好兼容,才没触发这个shebang错误。

修复方法

只需要修改play.sh的第一行,把shebang改成正确的绝对路径:

#!/bin/sh
echo 'hello'

之后重新运行你的Ansible playbook,script模块就能正常工作了——它会自动把脚本上传到远程、执行,最后清理临时文件,完全不需要手动copy的步骤。

内容的提问来源于stack exchange,提问作者Anish Sapkota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 11:52:30