1
尝试从php执行bash脚本(使用ssh命令),但不能像在CLI上执行的方式那样工作。使用ssh调用bash脚本
这里是bash脚本的片断(deploy_to_nagios.sh
):在CLI
#!/bin/bash -x
SERVER=$1
CARRIER=$2
MANAGEMENT_NAGIOS_SERVER=$3
MANAGEMENT_NAGIOS_USER=$4
ssh -q ${MANAGEMENT_NAGIOS_USER}@${MANAGEMENT_NAGIOS_SERVER} "ls /usr/local/nagios/health_check_${CARRIER}.cfg"
运行deploy_to_nagios.sh成功返回,但在PHP执行时使用
$exec3 = shell_exec('deploy_to_nagios.sh '.' '.$server.' '.$carrier.' '.$nag_manage_server.' '.$nag_manage_user);
文件不能被发现。我的猜测是php运行ssh和ls命令是分开的,这就是为什么找不到文件。 有没有办法让php的执行与CLI相同,把这两个命令当作一个对待?
澄清:deploy_to_nagios.sh或/usr/local/nagios/health_check_${CARRIER}.cfg无法找到? –
不知道你在说哪个文件无法找到,但如果你担心这个问题,那为什么不直接使用文件的完整路径呢? – drewyupdrew
通过php执行deploy_to_nagios.sh时,找不到“/usr/local/nagios/health_check_${CARRIER}.cfg”。但是通过CLI执行deploy_to_nagios.sh时可以找到该文件。我猜想,PHP正在执行“ls /usr/local/nagios/health_check_${CARRIER}.cfg”作为单独的命令命令ssh -q $ {MANAGEMENT_NAGIOS_SERVER $ {MANAGEMENT_NAGIOS_USER},因此它可能会在本地服务器上查看它在$ {MANAGEMENT_NAGIOS_USER}上? – user4298197