Pass php variable to exec

Eu preciso obter informações dimm usando ipmitool da seguinte maneira:

exec("/usr/bin/ipmitool -I lan -H $spip -U root -P '$thepassword' sunoem cli 'show System/Memory/DIMMs/$a' | grep -i location", $dimm_loc, $ipmiretval); 

$ a é previamente definido como: $ a = $ dimm [$ i]

O valor de retorno para o comando exec acima é 1. Se eu replace $ a com seu vaule, ou seja, 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);

O comando exec é executado conforme o esperado. Então, parece que $ a não pode ser usado no exemplo acima. Como posso passar a variável para o comando exec?

Obrigado!!

   

Execute var_dump($a) e veja o que ele contém. Também despeje o comando executado como uma seqüência de caracteres para ver se o comando está formateado corretamente.

Mais uma dica. Em vez de fazer um exec("some very long command line") , coloque sua linha de comando em uma variável, então tanto LOG e exec () a variável. Por exemplo:

 $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"); }