跳到主要內容

Linux 操作不求人系列 - 參章之肆 - 系統管理(IV) - 新增不斷電系統與印表機

     在這一節,我們要說明如何利用不斷電系統(以下簡稱UPS,https://en.wikipedia.org/wiki/Uninterruptible_power_supply),來防止突然的跳電或停電時,可以利用不斷電系統所提供的電池,讓電腦主機可以再使用短暫時間,並利用這短暫時間,可以對使用者或使用工作,來發布訊息,再來正常關機。如此才不會因跳電或停電,對硬體裝置,或正在執行的程式與作業系統,來造成不可回復的影響。UPS一般分為三種,離線式(offline)、在線式(online)與線上交錯式(line-interactive),除了隨著電池容量愈大,價格愈高外,在線式亦比離線式或線上交錯式價格高出許多。但若預算真的充足,筆者還是相當建議買在線式的,畢竟可以使用的電器較多,而電力轉換時間較無縫接軌。
     因筆者本身僅擁有離線式之UPS,其品牌為 APC(www.apc.com),主要因 APC 所出產的UPS其有 opensource 的 apcupsd(http://www.apcupsd.org/)之套件可供 CentOS6_x86 使用,故使用此套件來說明,分別利用 USB 線(https://en.wikipedia.org/wiki/USB)與主機直接連接,或 Ethernet 網路卡與主機在相同內部網路等方式,來做停電時殘餘電量的監控,而可以自動的正常將電腦主機安全的關機。除此之外,APC 的UPS亦有自家的 PowrChute 軟體(https://www.apc.com/us/en/tools/download/software_comp.cfm?sw_sku=SFPCBE911&ISOCountryCode=us)可供在 MS Windows Server 與 Linux 上監控其UPS的健康狀況。
     首先,我們先以 root 權限,利用指令 yum install來下載 apcupsd ,並且按下鍵盤 y 與鍵盤 Enter 令其安裝,如前節的 ntfs-3g 套件安裝模式,如圖 3-44:


































(圖3-44)

     接著,確認 UPS 的 USB 監控線是否已插入在主機的 USB 連接埠上,然後利用指令 vim  /etc/apcupsd/apcupsd.conf 來編輯 apcupsd 的設定檔,如圖3-45-1至3-45-3。







































(圖3-45-1)








































(圖3-45-2)









































(圖3-45-3)

圖3-45-1至圖3-45-3的內容,對於使用 USB 連結方式監控,我們主要修改個參數,如以下

UPSCABLE  usb          # 維持預設,參數名稱可在 vim 下用搜尋來找到,如前章所說明

UPSTYPE  usb           #  圖3-45-1的此參數上方說明檔,書寫得相當詳細,故我們維持預設

BATTERYLEVEL  5   # 為設定當UPS電池殘餘電量剩少於 5% 時,便讓電腦主機做正常關機的動作

MINUTE   3              /* 為設定當UPS電池殘餘電量可提供負載少於3分鐘時,讓主機做正常關機的動作,與 BATTERYLEVEL 可以互相搭配,誰先到條件就先執行誰,與 BATTERYLEVEL 一樣端看管理者的需求  */

NOLOGON percent      # 可以設定為看電量殘餘量百分比數,來決定是否拒絕再有連線連入

------------
其他設定參數,請維持預設即可,再來須利用指令 service apcupsd start,來啟動監控後,再輸入指令 apcaccess,就可以看到 APC UPS 的參數與監控設定是否有成功。請讀者記得,若往後要開機亦載入 apcupsd 的監控,則需輸入以下指令
$ chkconfig  --level  35  apcupsd  on   /* 代表開機進入 init3 (多人連線之文字介面) 與 init5 (多人連線之圖形介面) 的模式時,皆會自動啟動 apcupsd   */

$  chkconfig      /*  看到現在所有開機會載入的 services 或 daemons,如MS Windows下的指令 services.msc 以及 msconfig.exe ,所看到的開機載入程式與服務相似,如圖 3-46。  */







































(圖3-46)

     除此之外,需要24小時不讓電腦主機間斷的使用的,請記得進入主機的BIOS介面,再把能源選項內的 restore on AC Power Loss 修改成 always on,這樣就算主機因長時間停電,而正常關機,一旦有電源供應,便可自動重開機。各家電腦廠牌,進入設定 BIOS 介面的方式不盡相同,一般為PC機器開機,出現第一個畫面時,由按下鍵盤Del鍵,即可進入 BIOS。
     若我們需要 UPS 經由網路,來提供很多台有上網的主機同時監控 UPS 的狀況,並可以因 UPS 電量低時,連接同一台UPS的多台主機皆自行正常關機,那要如何設定呢,除了 UPS 需要有網路卡的功能,並將其與其他要主機接在同一個交換器下,並先記下UPS網路卡的 MAC 位址值(通常會印或貼在網路卡上),再來僅需要修改設定檔 /etc/apcupsd/apcupsd.conf,如以下

UPSCABLE  ether      # 表示利用 ethernet network 連接

UPSTYPE  SNMP    /* 表示利用 SNMP (https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol) 傳遞UPS監控訊息  */

DEVICE   192.168.100.100:APC:private
/*   此為利用指令 arp -a 來查詢 UPS 網路卡的MAC位址值與內部網路 DHCP 的 IP 值對應,或是利用 
arp -s [MAC值]   */
------------------------------------
將上述這些參數更改後,再用 service apcupsd start,並再利用指令 apcaccess 來看看( 圖3-47,HOSTNAME的值,因資訊安全,已被筆者覆蓋 ),有上網的主機是否有與 UPS 連線並監控,並且將設定檔設定在每一台需要監控UPS的上網主機









































(圖3-47)

     接下來,筆者要說明如何在 CentOS6_x64 下,安裝印表機(Printer,中國稱打印機兒)。一般印表機連接方式,可分為USB連接,ethernet 有線網路連接,wifi無線網路連接(註因為現在使用平行埠的印表機已少見,https://en.wikipedia.org/wiki/Parallel_port )以一般中小企業或小型辦公室/實驗室,筆者相當推薦經由 ethernet 網路來連接內部網域,讓內部各種電腦主機皆可以使用同一組印表機資源,且印表機語言請選擇有支援 PostScript 語言(一般MS Window下的環境,僅 GDI 或 PCL 列印語言的印表機,皆可以在MS Window下驅動,但Linux下,各廠牌印表機可以要至原廠網站看看是否有Linux的驅動程式或是此網站 http://www.openprinting.org/printers 看是否有驅動程式可下載或支援 )與支援 JetDirect 或 LPD 列印,較易於在Linux下安裝。而USB連接方式,通常建議僅使用於個人的機器,並一對一的使用,盡量不要使用USB hub(https://en.wikipedia.org/wiki/USB_hub),來讓多電腦主機共同使用同一組印表機。
     在 linux 下,最普遍的就是利用CUPS( https://en.wikipedia.org/wiki/CUPS )來安裝,一般為利用 web browser 並於網址列輸入 localhost:631 或 127.0.0.1:631 來進入CUPS的web安裝模式。但筆者在此處,要先利用GNOME的系統管理程式來說明。首先我們在 terminal 介面下輸入system-config 按下鍵盤 tab 鍵,看看可用系統管理的程式,然後可以知道指令 system-config-printer 為管理印表機的系統管理程式。故我們輸入 system-config-printer &  後按鍵盤Enter鍵,讓system-config-printer程式可以在背景執行,且執行此指令的 terminal ,還可以再做執行下一個指令的動作(圖3-48)。























(圖3-48)

     圖3-48為進入system-config-printer的介面,點選介面左上 New 後,會出現調整防火牆的訊息,此時我們若無用到 IPP 或 mDNS (https://en.wikipedia.org/wiki/Internet_Printing_Protocol) 連接方式,可以選擇Do It Later。若如筆者一樣,不想用大腦想太多的讀者,請點選 Adjust Firewall 即可。接著,會出現圖3-49畫面,我們再把 Network Printer 點開。


























(圖3-49)
   
     圖3-49在左方選項,一般選擇 JetDirect 走 9100 連接埠,接下來,就是選擇何種品牌的印表機,可指定,或是匯入PPD檔(https://en.wikipedia.org/wiki/PostScript_Printer_Description),或網路搜尋驅動並下載(http://www.openprinting.org/drivers and http://www.openprinting.org/driver/Postscript),如圖3-50。點選Forward後,在選擇何種型號與驅動程式類型,如圖3-51,建議點選 PostScript 類型的驅動程式( 與foomatic的差異,請見 https://en.wikipedia.org/wiki/Foomatic ) ,若為太早期型號,或是無在清單內的機器,讀者可自行試著利用相似或相近的型號( 如1400與1450同為14XX型 ),一樣選擇 PostScript 的驅動,說不定,也可以正常的使用印表機喔。




























(圖3-50)

























(圖3-51)
 
     圖3-51點選Forward後,在選擇印表機的功能參數,如圖3-52,若有自動雙面列印功能的印表機,請記得把 Duplex Unit 勾選,Fit to Page 調整成 Nearest Size and Scale,其他參數若不清楚,請維持預設值就好。再點選 Forward後,就是最後設定名稱與放置位置的畫面,如圖3-53,老話一句,您看得明白與清楚可分辨就好,維持預設名稱也可以。亦可以多設定的印表機的顏色或是可否雙面的備註,來幫忙對機器型號不熟的使用者,列印時挑選。
























(圖3-52)


























(圖3-53)

     最後,附上利用 CUPS 的網頁安裝畫面(圖3-54),再請讀者自行玩一玩,並且利用 OpenOffice 來測試列印一下安裝成功的印表機吧。


























(圖3-54)
     再補充一個在 Terminal 下安裝印表機方式,如要安裝一個由 usb 連接的 hp 印表機,首先,要從網站 http://www.openprinting.org/drivers 或印表機原廠網站(若有提供),下載印表機的 ppd 檔(https://en.wikipedia.org/wiki/PostScript_Printer_Description或http://www.openprinting.org/driver/Postscript),再來利用
指令 lpadmin  -E -p hp4350 -v usb:/dev/usb/lp0 -m HP-LaserJet_4350-Postscript.ppd
再利用指令 lpstat -p hp4350 -l 來列出印表機的狀態。

     筆者想起以前用個印表機列印,還要在 Terminal 用到指令 lpr 列印,lpq 查詢列印工作,lprm 刪除列印工作,列印前,還要用到指令 a2ps 來轉成 PostScript 檔,但現在在較完好的圖形環境下,還真的比較少用到了呢。但或許有些利用 Shell Script 處理的檔案,還是用指令式的批次列印,可能還是比較有效率喔。



If you have any feedback or question, please go to my forum to discuss.

這個網誌中的熱門文章

Linux 操作不求人系列 - 貳章之貳 - Shell Script 程式設計(II) - BASH 與 TCSH / CSH

     在上章,我們介紹很多bash shell指令的應用方式,並讓它們變成 script,在這章此節,我們要承襲上節,繼續討論 bash shell script 的其它程式設計概念,與讓程式可重複使用的方法,就是利用函式(function)。      首先,我們來創作一個判斷是否為閏年的函數,script的名稱就取為 check_year.sh ,請自行將其設為可執行。程式碼如圖2-6,為了解說方便,筆者利用指令 nl check_year.sh 將程式碼包含行數印出(圖2-7),其他除顏色外,都與圖2-6同。以下 export 宣告環境變數,自訂變數無需加宣告保留字。(2021.10.07更正export說明,以下自訂變數宣告請直接去除export開頭) (圖2-6) (圖2-7)        圖2-7第2-6行,與之前的範例相似,皆有防堵參數個數輸入錯誤的判斷。第7-11行為接著判斷輸入的年分,是否為真的正整數,也就是大於零的數字。其中第7行可解釋為,利用正規表示式搜尋 $2 字串值得頭至尾部的字元,皆由 0-9 組成,若有,則為真(True)會進入 if 內的陳述執行, 但我們想要的,應該是僅要字串其中一字元為非正整數,便進入if 內的警告並跳出 。故,筆者在判斷式前多加一個 ! ,代表著當字元完全是正整數時,就不要執行  if  內陳述,而直接往第12行執行,但若其中有一個字元為非正整數,則會進入 if 內印出錯誤訊息並跳出 Script 。在此例使用者輸入非正整數等字串(如:12ab、cde、1a1b),便會出現錯誤訊息"Error Value",並跳出 Script 。而第8行的判斷式,效果跟第7行相同,但只能在BASH 3.0才能支援,故筆者故意保留,讓讀者可以學到另一種表示方式。         第12-28行,為宣告一個函式 leapyr () ,在 BASH Script內若要使用含式,必須在使用之前先建立函式的功能,如函式建立在第12-28行,則若要呼叫使用(Call)函式,則必須在第29行之後才能呼叫,並且可重複呼叫。第13行為定義函式呼叫時,一定會有一個外部參數, 此外部參數非該 Script 的外部參數 ,而是由程式撰寫者給入,故在此無設定防呆判斷。第14-

Linux操作不求人 - 伍章之陸 - Intel PXE 與利用 tftp + anaconda kickstart來自動部署系統

     現代的個人電腦與筆電爲了節能省碳,往往皆省略了光碟機的設置。雖然說 USB隨身碟亦可應用於安裝作業系統,但若遇到機房的大量機器需安裝之問題,亦不適合此種用光碟片或隨身碟逐臺安裝的方式,或是需準備多片光碟或隨身碟。故爲了大量安裝與部屬 Linux作業系統的機器,我們便可透過具有PXE功能之網路卡(https://en.wikipedia.org/wiki/Preboot_Execution_Environment),其所具備的網路開機的能力,來作透過網路方式來安裝與大量部署 CentOS Linux作業系統。其原理 wikipedia  的PXE說明,都解釋得很清楚,筆者不需要再 " 掉書包 ",在開發者大神面前班門弄斧,我們就直接來做做看。      首先,我們一樣透過 yum來安裝所需的 tftp伺服器軟體(http://www.jounin.net/tftpd32.html),利用PXE支援 tftp 透過 udp 埠號 69連線,來提供檔案的能力,給利用 PXE開機後安裝作業系統的機器,圖5-60   (圖5-60) 接著修改 tftp 設定檔 /etc/xinetd.d/tftp,如圖5-61,請記得 disable  要改為 no (圖5-61)      若要修改 server_args 參數為自訂的 tftp root 路徑,記得要變更 SELinux 的權限設定,如要改為/tftpboot,則使用指令 chcon  來調整,如以下: $ mkdir /tftpboot $ chcon  --reference /var/lib/tftpboot  /tftpboot 接著將 xinetd 與 tftp 加入開機啟動,並重啟動 xinetd,如下: $ chkconfig  --level  235  xinetd on $ chkconfig  --level  235  tftp  on $ service xinetd restart 開放防火牆通行 $ iptables -A INPUT -p udp --dport 69 -j ACCEPT $ service iptables re

Linux操作不求人- 肆章之壹 - 伺服器架設(I) - SSH(SFTP、SCP)、FTP伺服器與遠端連線

@ ssh, sftp      通常安裝好 CentOS6_x64 作業系統後,sshd, ssh daemon 的服務功能是預設開啟的,如筆者的前面篇章所述,預設的 iptables 防火牆設定,亦是開啟讓 ssh 的連線是可通過的,不僅可以連出,也可以被連入。若要確認是否有安裝 sshd 套件以及在啟動時的 runlevel 2 3 5 是否有被載入,可以使用以下指令搜尋: $   rpm  -qa  |   grep  openssh     #  ssh 與 sshd 連線服務皆由 openssh 應用軟體提供。 或使用以下 $   rpm  -qa  |   grep  ssh         #  比用關鍵字 openssh 搜尋更模糊,故符合的條件更多。      如圖4-1可以查詢到有關於 openssh-client 與 openssh-server 的套件, openssh-server 便是提供連入服務的軟體,openssh-client 為提供可以連出的工具。若無以上套件,則使用 yum install openssh ,則可下載安裝。 (圖4-1) 再接著輸入以下指令查詢到 sshd 這個服務,是否有再開機程序內載入,如圖4-2 $ chkconfig | grep ssh   # 查詢 sshd 是否有於 開機 runlevel 啟動 再利用以下指令,來查詢是否防火牆有允許連線 $ iptables  -L  |  grep ssh   # 出現如圖4-2 允許通過之條件 (圖4-2)      接下來,我們要先來調整 sshd 的設定檔,利用 vim  /etc/sshd/sshd_conf ,如圖4-3-1與4-3-2。因為設定檔參數很多,筆者為方便說明,將 /etc/sshd/sshd_conf 檔案內容分成兩張圖。 (圖4-3-1)