2017-05-06

[筆記] QNAP NAS增加手動排程

公司規模比較小,所以使用NAS當作File Server,供大家存取共用檔案,也是挺方便的。

而有時總是會有些需求,例如在某些時刻禁止某些使用者連線網路磁碟機,在web介面上沒這功能,所以就要自己寫啦~


我們公司的NAS是TS-259 Pro+,首先先規劃一下流程:
1. 登入ssh,然後在裡面新增設定的bash檔
2. 修改crontab,加入排程執行我們的bash檔

然後測試,看起來一切OK~好~重開個機吧,結果一重開,剛才寫好的bash檔都不見了!WTF!?

原來,我們用SSH登入後看到的檔案系統,其實很多東西都是放在ramdisk內,如果我們直接在裡面新增檔案的話,重新開機就會不見囉!所以必須放在實體硬碟,而最好的方式就是放在共用資料夾,保證就會是實體硬碟,這樣開機也不會消失了,而且以後有要新增的指令只要先在自己的作業系統編輯好再放上即可,比較方便,只要我們權限設定好即可囉。

首先我們登入web介面,先新增一個共用資料夾(例如schedule),這個資料夾目的是放置我們要設定排程指令的檔案,所以權限只限管理者可讀寫,並且隱藏(直接在網址打資料夾名稱還是進的去)。

資料夾開好後,就可以放我們的bash檔,建議用notepad++編輯,因為用windows內建的記事本會因為格式不對而出錯。

再來請用ssh登入NAS(記得要先把ssh可登入打開),ssh只限管理帳號登入喔!首先到/share/MD0_DATA/schedule內,設定指令碼可執行:
chmod 755 *.sh

(上述紅字的路徑是TS-259 Pro+的分享資料夾路徑,必須依照自己的系統修改)

接著編輯/etc/config/crontab檔案,增加你要甚麼時候執行sh檔即可。如:
0 10 * * * /share/MD0_DATA/schedule/xx.sh
這行表示每天10點會執行一次xx.sh內容。

編輯好了之後,執行一下
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
讓系統重新讀取一次crontab的設定,以及重新啟用crond服務即可。