我正在尝试创建一个可以通过ssh连接到我的Qnap TS219服务器并在其上运行命令的php脚本。从PHP运行shell脚本
到目前为止,我的脚本可以很好地连接到服务器,但是当我运行该命令时,我收到一条错误消息,我无法弄清楚。
exec.sh
#!/bin/bash
cp /share/MD0_DATA/Qdownload/rapidshare/admin/script.txt /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh
chmod 755 /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh
nohup sh /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh &
exit 0
script.sh
#!/bin/bash
/opt/bin/plowdown -o /share/MD0_DATA/Qdownload/rapidshare /share/MD0_DATA/Qdownload/rapidshare/admin/down.txt 2>/share/MD0_DATA/Qdownload/rapidshare/admin/output.txt
,我当前正在运行的直通SSH我提交表单之后的命令:
echo $ssh->exec('sh /share/MD0_DATA/Qdownload/rapidshare/admin/exec.sh');
眼下生成下面的代码,但只有在我杀死2个bash进程后(页面不断加载,处理器活动在10 0%如果我不杀2的bash进程):
/share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 261: getopt: command not found start download (rapidshare): http://rapidshare.com/files/312885386/Free_Stuff-Your_Internet_eBay_Business_Free_Startup_Resources.rar /share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 261: getopt: command not found /share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 46: --insecure: command not found Error: failed inside rapidshare_download()
这个脚本会在我的本地网络,没有从外部接入一起使用,所以我不担心安全问题,我知道代码看起来很基本的,原始的,但我没有使用PHP,shell脚本的经验,所以如果有人可以对此做任何意义,并帮助我将不胜感激。
Edit1。我也尝试过shell_exec命令,但仍然没有喜悦,如果我通过腻子作品精美地运行脚本。
Edit2。我认为我们正在做点什么。
我添加了您建议的代码,并且收到以下消息。
sh: /share/MD0_DATA/.qpkg/Optware/share/plowshare: is a directory /usr/bin:/bin:/usr/sbin:/sbin
我想此刻的PATH是USR /斌:/ bin中:usr/sbin目录:/ sbin目录,我想这应该是的/ opt/bin中的/ opt/sbin目录,因为那里是 “可执行文件”。任何ideeas?
谢谢, 克里斯。
你试过passthru()或system()吗? – 2010-08-24 09:18:31
刚刚尝试过他们,没有运气...甚至没有生成错误代码...我用system和passtrhu替换了exec命令(希望这是我想要的方式)...谢谢你答复,保罗。 C. – Chris19 2010-08-24 10:10:45
如果可能的话,你应该使用Bash内建'getopts'而不是外部'getopt'。请参阅“getopts”一节[此处](http://mywiki.wooledge.org/BashFAQ/035)。 – 2010-08-24 15:05:07