2017-09-05 38 views
1
$command1 = "interfacename -S ipaddress -N nms -P company "; 
$command2 = "list search clientclass hardwareaddress Mac address "; 
if (exec($command1 . "&&" . $command2)) { 
    echo "successfuly executed"; 
} else { 
    echo "Not successfuly executed"; 
} 

如果命令1(cmd查詢)成功執行,我想要命令2(它也包含一些cmd查詢)接下來要執行。在上面的腳本中,只執行命令1。它不顯示命令2的任何結果。如何在PHP中同時執行兩個CMD查詢

我沒有找到任何解決方案,浪費了兩天的時間。

+0

這不能解決我的問題 –

回答

0

您可以使用shell_exec() PHP函數直接在腳本中運行Shell Command

語法:串了shell_exec(字符串$ CMD)

實施例:

$output = shell_exec('ls -lart'); 
var_dump($output); #Showing the outputs 

可以在單個命令行中使用多個條件。

實施例:

$data = "rm a.txt && echo \"Deleted\""; 
$output = exec($data); 
var_dump($output); 

if($output=="Deleted"){ 
    #Successful 
} 

在上面的例子中,當文件刪除成功"Deleted"串將分配給$output。否則error/warning/empty字符串將分配給$output變量。你應該使用$output字符串作出條件。

這裏是shell_exec()

注意的文檔:將有功能shell_exec()輸出的new line字符。

+0

如何使用shell_exec執行同時執行的條件cmd查詢? –

+0

我正在更新我的答案! @RehmanAli –

+0

我在等你的答案@Sumon Sarker –

0

您可以使用;&&來分隔這些命令。 ;無條件地運行這兩個命令。如果第一個失敗,第二個仍然運行。使用&&使第二個命令依賴於第一個命令。如果第一個命令失敗,第二個命令將不會運行。 Reference

+0

我已經使用了&&操作符,但它不起作用@Krishanaraj –

0

如果我正確理解你的問題,你要執行$command1,然後執行$command2只有$command1成功。

您嘗試的方式,通過將命令加入&&是shell腳本中的正確方式(即使使用PHP函數exec()也可以運行)。但是,因爲您的腳本是用PHP編寫的,所以讓我們用PHP的方式來做(實際上,它的方式是一樣的,但我們讓PHP執行邏輯AND操作)。

使用PHP函數exec()來運行每個命令並將三個參數傳遞給它。第二個參數($output,通過引用傳遞)是一個數組變量。 exec()將命令的輸出附加到它。第三個參數($return_var,也通過引用傳遞)是一個變量,由exec()與執行的命令的退出代碼一起設置。

Linux/Unix程序中的約定是爲了成功返回0退出代碼和一個(一個字節)正值(1 .. 255)以獲取錯誤。另外,Linux shell上的&&運營商知道0成功,並且非零值是錯誤。現在

,PHP代碼:所述代碼結束

$command1 = "ipcli -S 192.168.4.2 -N nms -P nmsworldcall "; 
$command2 = "list search clientclassentry hardwareaddress 00:0E:09:00:00:01"; 

// Run the first command 
$out1 = array(); 
$code1 = 0; 
exec($command1, $out1, $code1); 

// Run the second command only if the first command succeeded 
$out2 = array(); 
$code2 = 0; 
if ($code1 == 0) { 
    exec($command2, $out2, $code2); 
} 

// Output the outcome 
if ($code1 == 0) { 
    if ($code2 == 0) { 
     echo("Both commands succeeded.\n"); 
    } else { 
     echo("The first command succeeded, the second command failed.\n"); 
    } 
} else { 
    echo("The first command failed, the second command was skipped.\n"); 
} 

後,$code1$code2包含兩個命令的退出代碼;如果$code1不爲零,則第一個命令失敗,$code2爲零,但第二個命令未執行。

$out1$out2是包含兩條命令的輸出的數組,分割在線上。

+0

在上面的代碼中,命令2沒有執行,它直接進入else部分和echo(第一個命令成功,第二個命令失敗。\ n) –

+0

它報告發生了什麼。第二個命令返回一個不是「0」的退出碼,或者它根本沒有運行。 '$ code2'的價值是什麼? – axiac

相關問題