iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
IT管理

用UNRAID打造AIO全生態系列 第 18

Bash Script:Bash+PHP指令撰寫

  • 分享至 

  • xImage
  •  

在講完bash的指令及注意事項後
還要在講一個讓腳本更實用的技術:PHP


但明明bash也可以做到任何Linux,為何還要使用php呢?

Bash與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撰寫的原因

PHP撰寫

  • 1.調用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等可直接調用
可玩性非常大,就請大家自行摸索囉/images/emoticon/emoticon31.gif

  • 2.函數用法

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腳本的核心觀念了!


上一篇
Bash Script:Bash指令撰寫
下一篇
Script:Auto Backup flash
系列文
用UNRAID打造AIO全生態31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言