2012-02-20 8 views
1

EXECコマンドへ上記の実行コマンドは1です。$ aをそのvauleに置き換えた場合、つまり exec("/usr/bin/ipmitool -I lan -H $spip -U root -P '$thepassword' sunoem cli 'show System/Memory/DIMMs/D5' | grep -i location", $dimm_loc, $ipmiretval);パスPHPの変数は、私は次のようにipmitoolを使用して、DIMMの情報を取得する必要が

execコマンドは期待通りに実行されます。上の例では$ aを使用できないようです。変数をexecコマンドにどのように渡すことができますか?

ありがとうございます!

答えて

2

実行var_dump($a)実際にどのような内容が含まれているかを確認してください。また、実行されたコマンドを文字列としてダンプして、コマンドが適切にフォーマットされているかどうかを確認します。

+0

ありがとうBartosz !!!はい、トリムする必要がある文字列の先頭に余分なスペースがありました!ありがとう、トン! – Azp

+0

'var_dump'は何かをデバッグするのにもっとも近い友達です:) –

+0

忘れないでください。http://www.php.net/manual/en/function.escapeshellcmd.php – Damien

1

もう1つのヒント。 exec("some very long command line")の代わりに、コマンドラインを変数に入れてから、LOGとexec()の両方に変数を設定します。例:

$fmt="/usr/bin/ipmitool -I lan -H %s -U root -P '%s' sunoem cli 'show System/Memory/DIMMs/%s' | grep -i location"; 

$cmd=sprintf($fmt, $spip, $thepassword, $a); 
exec($cmd, $dimm_loc, $ipmiretval); 
syslog(LOG_DEBUG, "Running: $cmd"); 

if ($ipmiretval > 0) { 
    syslog(LOG_ERR, "exec FAILED: $cmd"); 
} else { 
    syslog(LOG_DEBUG, "exec: $cmd"); 
} 
+0

素晴らしい!!ありがとうGhoti、非常に便利なヒント! – Azp

関連する問題