php - 从php运行shell脚本

我正在尝试创建一个可以通过ssh连接到我的Qnap TS219服务器并在其上运行命令的php脚本。

到目前为止,我的脚本可以很好地连接到服务器,但是当我运行命令时,我收到一条错误消息,但无法弄清楚。

可执行文件

#!/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进程后才发生(如果我不杀死2个bash进程,则页面将继续无限期地加载,并且处理器 Activity 处于100%):
/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脚本的经验,因此如果有人可以理解在这一点上,并帮助我,将不胜感激。

编辑1。我还尝试了shell_exec命令,仍然不高兴,并且如果我通过腻子运行脚本,效果很好。

编辑2。我认为我们正在努力。

我添加了您建议的代码,并收到以下消息。
sh: /share/MD0_DATA/.qpkg/Optware/share/plowshare: is a directory /usr/bin:/bin:/usr/sbin:/sbin 

我认为目前PATH是usr / bin:/ bin:usr / sbin:/ sbin,我认为它应该是/ opt / bin / opt / sbin,因为这里有“可执行文件”。有什么想法吗?

谢谢,
克里斯。

最佳答案

运行这个

echo $ssh->exec('pwd');

它是否正确列出您的路径?如果是这样,那么您的问题就不是PHP,如果它没有列出或仍然给出错误,则PHP是您的问题,我们可以从那里继续。

根据您列出的错误,我的第一个猜测是未设置PATH,因此lib.sh找不到所需的内容。

请记住,您是使用自定义 shell (PHP ssh)登录的,通常情况下未设置应有的设置,因此您的脚本可能找不到路径和变量之类的要求。

编辑:
由于它提供了/ root,我们至少知道它正在执行,为什么不还要设置PATH等...
echo $ssh->exec('PATH=$PATH;/share/MD0_DATA/.qpkg/Optware/share/plowshare; sh /share/MD0_DATA/Qdownload/rapidshare/admin/exec.sh');

记住,您还可以使用它来查看正在设置和未设置的内容。
echo $ssh->exec('ECHO $PATH');

https://stackoverflow.com/questions/3554693/

相关文章:

grails - 如何在 Grails 中对存储过程记录进行建模?

svn - KDESvn 'Add ssh-identities to ssh-agent' 不起作

ubuntu - ssh 不会在 ubuntu 10.04 64bit 中自动启动

bash - 通过ssh登录时自动运行脚本

git - Git推送错误:ssh:无法解析主机名domain.com [:7555]:提供了节点名

ssh - 如何在远程服务器上运行CPU Hogging程序?

grails - Grails War在版本3.1中产生JAR文件

grails - 从过滤器访问 'session'

ssh - chroot访问www文件夹

grails - Groovy/Grails无法仅在运行时解析类