跳到主要內容

發表文章

目前顯示的是 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 re

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

    make是Linux下安裝軟體與程式一個相當重要的工具,如前章節所提的安裝軟體三劍客。 configure, make , make install。當我們完成自己所撰寫的C 或 fortran程式,通常會使用編譯器指令 gcc -c 或 gfortran -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) 接著編輯

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]* 來找出不含數字

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

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 檔案 s shconfig_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