在講完bash的指令及注意事項後
還要在講一個讓腳本更實用的技術:PHP
但明明bash也可以做到任何Linux,為何還要使用php呢?
這就要講到PHP的功能與特性了
身為腳本語言的PHP,它與Linux的相容性卻非常好
這是因為PHP也能執行系統指令
例如
<?php
echo exec('ls -al');
?>
上述腳本假如使用Web Server就能在php檔案的所在目錄裡,對目標網頁輸出該目錄下的檔案內容
雖然bash也可以達到輸出ls -al
的效果
但差別就是差在PHP能與網頁(WebUI)做互動
也能與Linux shell做互動
而純Bash的腳本就只能輸出在shell上了
這就是為什麼很多WebUI的DashBoard都是使用PHP撰寫的原因
這也是UNRAID裡非常重要的用法
因為UNRAID大部分WebUI上的功能皆以PHP實現
這時就可以偷吃步
直接調用這些檔案來執行想要的功能,與WebUI整合
了
例如
#!/bin/bash
/usr/local/emhttp/webGui/scripts/notify -e "Unraid Notice" -s "test" -d "test123" -i "normal"
exit
(上述腳本需注意,由於是用bash來調用PHP
所以需在結尾加上exit
,以免php在網頁上無限執行!)
調用notify.php可以直接在WebUI上輸出一個通知側欄
作用是當腳本執行成功或需要通知運行狀態時,可以馬上在WebUI上知道訊息
小提示
當然這只是其中一個用法而已,UNRAID還有非常多功能如:mail通知、備份系統flash等可直接調用
可玩性非常大,就請大家自行摸索囉
Bash與PHP的差別大概就是PHP可以做物件導向了吧?
這樣不僅會優化腳本的運作,也可以讓整體程式碼變得較乾淨易修改
例如
function getRsyncReturnValue($returnValue) {
$returnMessage[0] = "Success";
$returnMessage[1] = "Syntax or usage error";
$return = $returnMessage[$returnValue];
return $return;
}
getRsyncReturnValue(0)
上述程式在單純PHP上看似多餘,但如果與其Bash腳本結合
就可以發揮很好的效果
因為Bash運行失敗的輸出是"0"
這時只需調用此函數,判斷指定的Bash是否運作成功
再與前面的通知腳本相結合
這樣基本上已經摸透UNRAID腳本的核心觀念了!