發表文章

目前顯示的是 2017的文章

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 restart 

開放 tcp wrapper 設定,更改 /etc/hosts.allow (以為只有udp,常忘記此設定要改,要注意)
in.tftpd:*…

Linux操作不求人 - 伍章之伍 - make 巨集式編譯器

圖片
make是Linux下安裝軟體與程式一個相當重要的工具,如前章節所提的安裝軟體三劍客。 configure, make , make install。當我們完成自己所撰寫的C 或 fortran程式,通常會使用編譯器指令 gcc -cgfortran -c 來編譯成連結檔或物件檔函式庫(Library),如 .a (https://en.wikipedia.org/wiki/Static_library) .o .so等附檔名,而此函式庫又可以讓其他程式利用其中的函式與類別。何時要用到動態或靜態函式庫,stackoverflow有專業的回答(https://stackoverflow.com/questions/140061/when-to-use-dynamic-vs-static-libraries)。

假設我們要寫一個簡單的 C 程式,檔名為 hellomake.c,用 make 來編譯我們的程式,程式如下:
#include<stdio.h>
void main ( void )
{
   print ("This is my first c file."\n);
}

---------------------------------------------------
儲存離開後,利用autoscan 指令,便會產生如圖5-70的兩個檔 autoscan.log 與 configure.scan,而 configure.scan 便是需要產生標準的 GNU makefile 的關鍵檔。我們可以把他改成 configure.in 或 configure.ac,並利用 vim configure 來修改參數,如圖5-71,改為圖5-71右邊的參數











(圖5-70)





(圖5-71)


修改完 configure.in 內的參數後,再執行 aclocal 與 autoconf ,就會產生 autom4te.cache 的資料夾與 configure 的執行檔,此執行檔就是先前章節所要編譯原始碼前,會執行的 ./configure ,並會產生適合您的機器環境之 GNU Makefile,如圖5-72


(圖5-72)
接著編輯 Makefile.am 檔的內容,加入如下內容
AUTOMAKE_OPTION=foreign b…

Linux操作不求人 - 伍章之肆 - 正規表示式(Regular Expression, RE)

圖片
很多直譯式的程式語言皆有支援正規表示式(R.E.,  Regex)(https://en.wikipedia.org/wiki/Regular_expression),如Perl,PHP,Shell Scripting 而 Linux 下的shell 操作環境更是可以利用 sed,grep 加上正規表示式來置換或是找尋想要的資料,表示的範圍可用 / Regrex  / 或 "Regex " 或 ' Regex ' 來給定。正規表示式大概遵從以下幾種規範:
1.  ^ 符號代表比對字串之起頭位置,而 $ 符號代表比對字串結束位置,假設有檔案內容如
圖5-4-1,我們利用指令 grep -n  來搜尋並印出有吻合字串的行數。每一行為算一組字串。



(圖5-4-1)
如圖5-4-1 可知道有6 (行) 組字串,第一個比對 ' se'(空格加上se),找到第一組。接著找起頭含M的,就找到第三組字串。接著找含 t 結尾之字串,便找到了第一,二,四組。最後找由數字結尾的字串,便出現第六組。以上皆為比對有列出的單一字串。

2. 若要比對可能有重複的字串,就需使用重複次數符號,如 * 與 ?,+為重複一次以上,或列舉次數{n}與{n,m},其中n為最少重複次數,m為最多重複次數,如圖5-4-2,此時要用 egrep 指令來操作才能看出,man egrep可查閱 egrep 操作。























(圖5-4-2)

圖5-4-2找出RegEx.txt 內容包含字串 s 的任意重複字數,s?代表s無重複或重複一次該字元的字串為吻合。接著指定找 s 最多出現兩次的字串 s{2},僅找到第三組與第五組,有僅包含 ss。 再來找數字978的任意重複數字,與最少重複一次的結果,才有出現第六組的字串,但當最少重複設定兩次,卻是無吻合,所以亦可將條件設定[0-9]+,表示任意數字的集合重複最多三次。 * 與 ? 等特殊字元,若是為欲搜尋之標的物,請用符號 \ 來保留,如 \*。

3. 除此之外,亦可用 [ ] 內來列舉欲比對的字元,如 [ x | y | z ] 或 [0-9 | a-z | A-Z ]。如圖5-4-3
利用條件 [^0-9]* 來找出不含數字的字串(紅色),或是僅含數字的字串(紅色)。




















(圖5-4-3)

4. 其他特殊字元比對,如
. …

Linux操作不求人 - 伍章之參 - SELinux 管理操作工具

圖片
SELinux (Secure-Enhance Linux,https://en.wikipedia.org/wiki/Security-Enhanced_Linux),為 Linux 核心內的強制存取控制(MSA)的實現,已最小權限原則為基礎的安全模組,CentOS4版本便已經預設內建。SELinux主要為美國國安局(NSA)所開發,詳細資訊可參考https://www.nsa.gov/what-we-do/research/selinux/,就不再各位高手高手高高手面前贅述。我們主要直接進入SELinux的操作設定,而非不想面對的如其他說法:先 關 閉 它,如此反而造成系統的安全性疏漏。
首先,我們必須先利用 yum 下載 SELinux的 管理工具 policycoreutils,與錯誤紀錄工具 setromubleshooting,如圖5-3-1,使用 yum install policycoreutils-*


















(圖5-3-1)

     因SELinux管理工具為 Python 所撰寫,在使用之前,先檢視是否有更改系統預設 Python版本有改變 ( 如CentOS6預設為Python2.6,有些操作者可能自行換了 Python2.7,故要修改python  路徑),若改變Python 預設環境,會造成管理工具的執行錯誤,故需逐一變更管理工具所引用的 Python環境,或修改 /bin/python 或 /usr/bin/python 之版本。在 CentOS6下,SELinux 的設定檔置於 /etc/selinux/config。我們先用指令 getsebool,來獲得 SELinux 現有的預設設定。亦可以用 semanage boolean -l ,來看到每個boolean的說明,如圖5-3-2 至 圖5-3-6。semodule -l 可查看各政策模組的版本。以下條件都是由不同模組來提供他們是否開啟的boolean參數,若要更改永久設定,可使用指令 setsebool -P,如更改可開放個人home資料夾下作為httpd網站,則除設定網站 httpd 伺服器的 config外,還要注意設定selinux policy 為
 setsebool -P  httpd_home_dirs on

setsebool -P httpd_…

Linux操作不求人 - 伍章之貳 - 動手寫一些好用的 Scripts

圖片
承前幾篇章節的伺服器架設步驟,我們接著利用scripts 的優勢,來直接作的一鍵安裝各伺服器軟體啟動的 script,首先為 ssh,執行檔名設為 sshdconfig_install.bash,環境為 CentOS6,內容如以下,請記得將檔案擁有者改為 root (chown root:root),chmod u+x 後,使用root來執行。

#ssh




















(圖5-2-1)





















(圖5-2-2)





(圖5-2-3)
ssh daemon 自動設定的 shell script 程式,如圖5-2-1 至 5-2-3,執行後如圖5-2-4與5-2-5,禁止root直接遠端登入。










(圖5-2-4)























(圖5-2-5)

完整的 script 檔案 sshconfig_install.bash,連結可從 Github 此下載


#vsftpd
vsftpd 的簡易自動設定檔,如圖5-2-6至圖5-2-9,預設開啟ftp over implicit ssl。



































(圖5-2-6)




































(圖5-2-7)


































(圖5-2-8)












(圖5-2-9)


完整的 script 檔案 vsftpdconfig_install.bash,連結可從 Github此下載





未完,待續...
To be continued



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

Linux操作不求人 - 伍章之壹 - Generic Mapping Tools (GMT) 繪圖於 Linux 環境下

圖片
本篇的GMT(Generic Mapping Tool,http://gmt.soest.hawaii.edu/)是地球科學學術領域相當常見的地圖繪圖工具,並非常看到的格林威治時間(GMT +8)。GMT科學繪圖軟體(以下簡稱gmt),在很多地球科學相關的科學文件內圖片,可常見到他繪圖的身影。當然有很多套裝軟體亦可達到相同的目的,如 MathWorks 的 MATLAB (https://www.mathworks.com/products/matlab.html)或是 HARRIS 的 IDL(http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx) 也是相當常見的,或是使用esri ArcGIS等相關繪製地圖的軟體,但這些軟體若要安裝在所有電腦,應當所費不貲。故口袋不深的研究人員,皆偏好 Open Source 的繪圖軟體,可能是 Python (http://matplotlib.org/basemap/)或是 R 環境內使用繪圖Library或免費的GIS軟體,如OpenStreetMap、Quantum GIS(QGIS)來製作。但筆者僅想透過本篇,介紹筆者在研究生時期曾經做過的 gmt 繪圖,以期能對地球科學研究的同好有些許幫助。
    首先,我們先回想第二章的 bash 或 csh 所撰寫的 Shell Scripts 方法,接下來所要展示的 gmt 繪圖指令,皆會透過 Shell Scripts 的撰寫方式帶入,來畫出 PS (PostScript,http://www.adobe.com/products/postscript/,往後簡稱 ps )格式的向量型圖檔,在 Linux 環境內,可用 Ghostscript 或Ghostview (hhttp://pages.cs.wisc.edu/~ghost/,http://www.ghostscript.com/download/gsdnld.html)來觀看圖。地形深度與高度網格數值檔 ETOPO,皆可透過 NOAA(https://www.ngdc.noaa.gov/mgg/global/global.html)下載,在此先感謝這些研究單位無私地提供資料,與這些 Open S…