phpからbashスクリプト(sshコマンド付き)を実行しようとしましたが、CLI上で実行された方法では動作しません。ここでphp sshでbashスクリプトを呼び出す
はbashスクリプト(deploy_to_nagios.sh
)の抜粋です:
#!/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"
は、CLIでdeploy_to_nagios.shを実行に成功返しますが、ファイルはできません
$exec3 = shell_exec('deploy_to_nagios.sh '.' '.$server.' '.$carrier.' '.$nag_manage_server.' '.$nag_manage_user);
を使用してPHP上で実行されるとき見つけられた。私の推測では、phpはsshコマンドとlsコマンドを別々に実行しているため、ファイルが見つからないのです。 PHPの実行方法はCLIと同じですが、それらの2つのコマンドを1つとして扱う方法はありますか?
明確化: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