linux自動化腳本
Linux系統下學習shell腳本語言比較好,對於一些常見的系統腳本使用Shell開發會更簡單、更快速,例如:讓軟體一鍵自動化安裝、優化,監控報警腳本,軟體啟動腳本,日誌分析腳本等,雖然PHP/python語言也能夠做到這些,但是,考慮到掌握難度、開發效率、開發習慣等因素,它們可能就不如Shell腳本語言流行及有優勢了。對於一些常規的業務應用,使用Shell更符合Linux運維簡單、易用、高效的三大基本原則。
『貳』 Linux下開機啟動腳本程序
本周我們學習了如何使用Linux編輯腳本程序,當我們編寫好腳本的時候,我們需要返回終端界面,使用各種編譯器運行程序,但是有時候我們需要在系統開機的時候就自動運行這些程序,下面我們就來看一下在Linux下將腳本設定成開機自動運行的方法。
Linux在啟動時,會自動執行/etc/rc.d目錄下的初始化程序,因此我們可以把啟動任務放到該目錄下。假設我們需要運行的腳本文件是test1目錄下的test.py。
在系統中找到/etc/rc.local文件,系統會根據該文件來啟動所指定的腳本或命令。
我們需要用超級用戶登錄,並在上述文件最後添加需要運行的腳本文件。
隨後cd /home/test1返回test1目錄以對其進行更改。
su test1 -c "python /home/test1/test.py" --把要執行的命令作為一個參數傳遞級su
下面我們就可以實現這個腳本的開機自動運行。
『叄』 關於linux啟動後自動執行腳本求教
編輯/etc/rc.d/rc.local文件,把腳本加入 開啟服務的方法根據發行版不同,有區別,比如RHEL、CentOS 4/5/6: chkconfig servciename on
『肆』 linux腳本運行
剛學習這個,寫的不好見諒
#!/bin/bash
while :
do
read -p "請輸入你喜歡的操作系統(Windows、Mac、Linux)" a
case $a in
windows|Windows|WINDOWS)
echo "巨硬,糟糕的選擇!"
continue;;
Mac|mac|MAC)
echo "蘋果是真滴有錢!"
continue;;
Linux|linux|LINUX)
echo "真是偉大的選擇!"
exit;;
*)
continue;;
esac
done
『伍』 Linux 下Python 腳本編寫的"奇技淫巧"
「 生命完美的答案,無非走過沒有遺憾 ---《天藍》」
「如何能夠解析腳本運行命令行選項(位於 sys.argv 中)」
argparse 模塊可被用來解析命令行選項
常用來定義一個腳本的說明文檔,一般我們寫python腳本會通過 if..else 的方式來提供一個腳本說明文檔,python不支持switch。所以很麻煩,其實,我們可以通過 argparse 來編寫說明文檔。
我們來看看怎麼執行一個python腳本
對於熟悉Linux的小夥伴下面的文檔在熟悉不過了,這個一個標准Linxu軟體包的說明文檔,文檔中定義是軟體包的說明
來看看這個腳本是如何編寫的
為了解析命令行選項, 首先要創建一個 ArgumentParser 實例, 使用 add_argument() 方法聲明你想要支持的選項。在每個 add-argument() 調用中:
dest 參數指定解析結果被指派給屬性的名字。 metavar 參數被用來生成幫助信息。
action 參數 指定跟屬性對應的處理邏輯,通常的 值為 store , 被用來存儲 某個值 或將 多個參數值收集到一個列表中 。
nargs 參數收集 所有剩餘的命令行參數到一個列表中。在本例中它被用來構造一個文件名列表
action='store_true' 根據參數是否存在來設置一個位置 Boolean 標志:
action='store' 參數接受一個單獨值並將其存儲為一個字元串
如果一個都沒有,會提示缺少參數 -p/--pat
choices={'slow', 'fast'}, 參數說明接受一個值,但是會將其和可能的選擇值做比較,以檢測其合法性:
一旦參數選項被指定,你就可以執行 parser.parse() 方法了。它會處理 sys.argv 的值並返回一個結果實例。每個參數值會被設置成該實例中 add_argument() 方法的 dest 參數指定的屬性值。
還很多種其他方法解析命令行選項。可以會手動地處理 sys.argv 或者使用 getopt 模塊 。但是,如果你採用本節的方式,將會減少很多冗餘代碼,底層細節 argparse 模塊 已經幫你處理好了。你可能還會碰到使用 optparse 庫解析選項的代碼。盡管 optparse 和 argparse 很像 ,但是後者更先進,因此在新的程序中你應該使用它。
「你寫了個腳本,運行時需要一個密碼。此腳本是互動式的,因此不能將密碼在腳本中硬編碼,而是需要彈出一個密碼輸入提示,讓用戶自己輸入。」
Python 的 getpass 模塊 正是你所需要的。你可以讓你很輕松地彈出密碼輸入提示,並且不會在用戶終端顯示密碼。
代碼中 getpass.getuser() 不會彈出用戶名的輸入提示。它會根據該 用戶的 shell 環境 或者會依據 本地系統的密碼庫 (支持 pwd 模塊的平台)來使用 當前用戶的登錄名
在bash中編寫pytohn腳本接收外部數據的方式,一般情況下,對於一般變數,我們用命令行變數的方式比較多(手動的處理 sys.argv ),對於 文件內容或者bash命令輸出 直接通過腳本內部獲取需要的數據。
其實python 腳本也可以用其他方式來接收 傳遞給他的 文件數據或者bash命令輸出 ,包括將 命令行的輸出 通過 管道傳遞 給該腳本、 重定向文件到該腳本 ,或在 命令行中傳遞一個文件名 或 文件名列表 給該腳本。
這里通過 Python 內置的 fileinput 模塊 ,可以實現重 定向,管道,以文佳輸出 的方式傳遞數據到腳本內部
使用 fileinput.input() 方法可以獲取當前輸入腳本的數據,腳本裡面用一個 FileInput 迭代器接收
文件直接接收
重定向接收
管道方式接收
fileinput.input() 創建並返回一個 FileInput 類的實例,該實例可以被當做一個 上下文管理器 使用。因此,整合起來,如果我們要寫一個列印多個文件輸出的腳本,那麼我們需要在輸出中包含文件名和行號
「你想執行一個外部命令並以 Python 字元串的形式獲取執行結果。」
使用 subprocess.check_output() 函數。
執行下試試
如果被執行的命令以非零碼返回,就會拋出異常。下面的例子捕獲到錯誤並獲取返回碼:
默認情況下, check_output() 僅僅返回輸入到標准輸出的值。如果你需要 同時收集標准輸出和錯誤輸出 ,使用 stderr 參數:
如果你需要用一個超時機制來執行命令,使用 timeout 參數:
通常來講,命令的執行 不需要 使用到 底層 shell 環境(比如 sh、bash) 。一個字元串列表會被傳遞給一個 低級系統命令 ,比如 os.execve() 。
如果你想讓 命令被一個shell 執行 ,傳遞一個字元串參數,並設置參數 shell=True . 有時候你想要 Python 去執行一個復雜的 shell 命令 的時候這個就很有用了,比如管道流、I/O 重定向和其他特性。例如:
是在 shell 中執行命令會存在一定的安全風險,特別是當參數來自於用戶輸入時。這時候可以使用 shlex.quote() 函數 來將參數正確的用雙引用引起來。
使用 check_output() 函數 是執行 外部命令 並獲取其 返回值 的最簡單方式。但是,如果你需要對 子進程做更復雜的交互 ,比如給它發送輸入,你得採用另外一種方法。這時候可直接使用 subprocess.Popen 類。
關於子進程,簡單來看下
也可以進程列表同協程結合的方式。你既可以在子shell中 進行繁重的處理工作,同時也不會讓子shell的I/O受制於終端。
如果直接丟到後台會自動在終端輸出IO
subprocess 模塊對於依賴 TTY 的外部命令不合適用 。例如,你不能使用它來自動化一個用戶輸入密碼的任務(比如一個 ssh 會話)。這時候,你需要使用到第三方模塊了,比如基於著名的 expect 家族的工具(pexpect 或類似的)(pexpect可以理解為Linux下的expect的Python封裝、通過pexpect可以實現對ssh、ftp、passwd、telnet等命令行進行自動交互,而無需人工干涉來達到自動化的目的。比如我們可以模擬一個FTP登錄時所有交互,包括輸入主機地址、用戶名、密碼、上傳文件等,待出現異常還可以進行嘗試自動處理。)
「你想向標准錯誤列印一條消息並返回某個非零狀態碼來終止程序運行」
通過 python 的 raise SystemExit(3) 命令可以主動拋出一個錯誤,通過 sys.stderr.write 將命令寫到標準的輸出端
直接將消息作為參數傳給 SystemExit() ,那麼你可以省略其他步驟
拋出一個 SystemExit 異常,使用錯誤消息作為參數,它會將消息在 sys.stderr 中列印,然後程序以狀態碼 1 退出
「你需要知道當前終端的大小以便正確的格式化輸出。」
使用 os.get terminal size() 函數 來做到這一點。
「復制或移動文件和目錄,但是又不想調用 shell 命令。」
shutil 模塊 有很多便捷的函數可以復制文件和目錄。使用起來非常簡單
這里不多講,熟悉Linux的小夥伴應該不陌生。
默認情況下,對於 符號鏈接 這些命令處理的是它指向的東西文件。例如,如果 源文件 是一個 符號鏈接 ,那麼目標文件將會是 符號鏈接 指向的文件。如果你只想 復制符號鏈接本身 ,那麼需要指定 關鍵字 參數 follow_symlinks
tree() 可以讓你在復制過程中選擇性的忽略某些文件或目錄。你可以提供一個忽略函數,接受一個目錄名和文件名列表作為輸入,返回一個忽略的名稱列表。例如:
對於文件元數據信息, 2() 這樣的函數只能盡自己最大能力來保留它。 訪問時間、創建時間和許可權 這些基本信息會被保留,但是 對於所有者、ACLs、資源 fork 和其他更深層次的文件元信息就說不準了
通常不會去使用 shutil.tree() 函數 來執行 系統備份 。當處理文件名的時候,最好使用 os.path 中的函數來確保最大的可移植性
使用 tree() 復制文件夾的一個棘手的問題是對於錯誤的處理,可以使用異常塊處理,或者通過 參數 ignore dangling symlinks=True 忽略掉無效符號鏈接。
「創建或解壓常見格式的歸檔文件(比如.tar, .tgz 或.zip)」
shutil 模塊擁有兩個函數—— make archive() 和 unpack archive() 可派上用場,
make archive() 的第二個參數是期望的輸出格式。可以使用 get archive formats() 獲取所有支持的歸檔格式列表。
「你需要寫一個涉及到文件查找操作的腳本,比如對日誌歸檔文件的重命名工具,你不想在 Python 腳本中調用 shell,或者你要實現一些 shell 不能做的功能。」
查找文件,可使用 os.walk() 函數 ,傳一個頂級目錄名給它
os.walk() 方法 為我們 遍歷目錄樹 ,每次進入一個目錄,它會返回一個 三元組 ,包含 相對於查找目錄的相對路徑,一個該目錄下的目錄名列表,以及那個目錄下面的文件名列表。
對於每個元組,只需檢測一下目標文件名是否在文件列表中。如果是就使用 os.path.join() 合並路徑。為了避免奇怪的路徑名比如 ././foo//bar ,使用了另外兩個函數來修正結果
os.walk(start) 還有跨平台的優勢。並且,還能很輕松的加入其他的功能。我們再演示一個例子,下面的函數列印所有最近被修改過的文件:
列印10分鍾之前被修改的數據
「怎樣讀取普通.ini 格式的配置文件?」
configparser 模塊 能被用來讀取配置文件
編寫配置文件
如果有需要,你還能修改配置並使用 cfg.write() 方法將其寫回到文件中
「你希望在腳本和程序中將診斷信息寫入日誌文件。」
python 腳本列印日誌最簡單方式是使用 logging 模塊
五個日誌調用( critical(), error(), warning(), info(), debug() )以降序方式表示不同的嚴重級別。 basicConfig() 的 level 參數是一個 過濾器 。所有級別低於此級別的日誌消息都會被忽略掉。每個 logging 操作的參數是一個消息字元串,後面再跟一個或多個參數。構造最終的日誌消息的時候我們使用了 % 操作符來格式化消息字元串。
如果你想使用配置文件,可以像下面這樣修改 basicConfig() 調用:
logconfig.ini
在調用日誌操作前先執行下 basicConfig() 函數方法 ,可以找標准輸出或者文件中輸出
basicConfig() 在程序中只能被執行一次。如果你稍後想改變日誌配置,就需要先獲取 root logger ,然後直接修改它。
更多見日誌模塊文檔https://docs.python.org/3/howto/logging-cookbook.html
「你想給某個函數庫增加日誌功能,但是又不能影響到那些不使用日誌功能的程序。」
對於想要執行日誌操作的函數庫,你應該創建一個專屬的 logger 對象,並且像下面這樣初始化配置:
使用這個配置,默認情況下不會列印日誌,只有配置過日誌系統,那麼日誌消息列印就開始生效
通常來講,不應該在函數庫代碼中 自己配置日誌系統 ,或者是已經有個已經存在的日誌配置了。調用 getLogger( name ) 創建一個和調用模塊同名的 logger 模塊 。由於 模塊 都是唯一的,因此創建的 logger 也將是唯一 的。所以當前進程中只有一個logging會生效。
log.addHandler(logging.NullHandler()) 操作將一個 空處理器 綁定到剛剛已經創建好的 logger 對象 上。一個空處理器默認會忽略調用所有的日誌消息。因此,如果使用該函數庫的時候還沒有配置日誌,那麼將不會有消息或警告出現。
在這里,根日誌被配置成僅僅 輸出 ERROR 或更高級別的消息 。不過, somelib 的日誌級別被單獨配置成可以輸出 debug 級別的消息, 它的優先順序比全局配置高。像這樣更改單獨模塊的日誌配置對於調試來講是很方便的,因為你無需去更改任何的全局日誌配置——只需要修改你想要更多輸出的模塊的日誌等級。(這個還有待研究)
「你想記錄程序執行多個任務所花費的時間」
time 模塊 包含很多函數來執行跟時間有關的函數。盡管如此,通常我們會在此基礎之上構造一個更高級的介面來模擬一個計時器。
這個類定義了一個可以被用戶根據需要啟動、停止和重置的計時器。它會在elapsed 屬性中記錄整個消耗時間。下面是一個例子來演示怎樣使用它:
這里通過 __enter__,__exit__ ,使用 with 語句 以及上下文管理器協議可以省略計時器打開和關閉操作。(關於上下文管理協議,即with語句,為了讓一個對象兼容with語句,必須在這個對象的類中聲明 __enter__和__exit__方法, , __enter__ 在出現with語句被調用, __exit__ 在代碼執行完畢被調用,可以參考open()方法)
在計時中要考慮一個 底層的時間函數問題 。 一般來說, 使用 time.time() 或 time.clock() 計算的時間精度因操作系統的不同會有所不同。而使用 time.perf_counter() 函數可以確保使用系統上面 最精確的計時器 。
「你想對在 Unix 系統上面運行的程序設置內存或 CPU 的使用限制。」
resource 模塊 能同時執行這兩個任務。例如,要限制 CPU 時間,下面的代碼在windows平台執行不了,但是Linux是可以的。
程序運行時, SIGXCPU 信號 在時間過期時被生成,然後執行清理並退出。
這暫時沒有好的Demo...
程序運行到沒有多餘內存時會拋出 MemoryError 異常。
setrlimit() 函數 被用來設置特定資源上面的 軟限制和硬限制 。
setrlimit() 函數 還能被用來設置 子進程數量、打開文件數以及類似系統資源的限制(cgroup) 。
「通過腳本啟動瀏覽器並打開指定的 URL 網頁」
webbrowser 模塊 能被用來啟動一個瀏覽器,並且與平台無關
新窗口打卡網站
當前窗口打開一個tab頁
指定瀏覽器類型,可以使用 webbrowser.get() 函數
『陸』 linux下編寫一個shell腳本,實現自動安裝軟體
Linux下Oracle的自動安裝腳本,基本上就是yes和no
分享一個Linux下安裝ASM+ORACLE的自動化腳本
http://blog.csdn.net/johnlongyuan/article/details/48416019
『柒』 linux 自動備份和恢復的腳本
Linux是公認的運行穩定、安全性較高的操作系統,但是伺服器硬體故障和各種意外因素都會導致Linux伺服器硬碟上數據丟失。特別對於運用在商業領域中的Linux伺服器,數據的安全性、完整性和災難後的數據恢復能力是每一個Linux系統管理員最為關心的問題。Linux作為新一代網路操作系統,在伺服器方面的應用越來越廣泛。作為專門的網路伺服器,一個重要功能就是對伺服器數據進行備份,以確保數據的安全。
常見的Linux數據備份方法
Linux操作系統中的數據備份工作是Linux系統管理員的重要工作和職責。傳統的Linux伺服器數據備份的方法很多,備份的手段也多種多樣。常見的Linux數據備份方式僅僅是把數據通過TAR命令壓縮拷貝到磁碟的其它區域中去。還有比較保險的做法是雙機自動備份,不把所有數據存放在一台計算機上,否則一旦這台計算機的硬碟物理性損壞,那麼一切數據將不復存在了。所以雙機備份是商業伺服器數據安全的基本要求。通常情況下使用的雙機備份是雙機定時備份文件,而不是實時的。要實現雙機備份,必須先在單機上備份所有的文件,然後再把備份文件傳輸到其它機器上。這樣可能比較麻煩,而且有不足之處。例如,這樣做對於不需要備份的文件也要在網路上傳輸,會造成帶寬的浪費。
實現備份與刻錄的整合
為了彌補Linux上常見備份方法的不足,本文將講述使用sitback軟體將Linux伺服器磁碟中的指定數據進行自動備份,並刻錄到CDR光碟的方法,以達到數據在光碟中安全存儲的目的。此方法將數據備份和光碟刻錄兩個步驟整合在一起,自動化程度和安全性較高,而且sitback還能實現Linux網路中不同計算機之間的數據備份。
sitback簡介
sitback是一款基於開源協議開發的Unix平台下的自動備份軟體。與一些 Linux開放源碼軟體不同,sitback開發者僅提供源代碼壓縮包的形式給Linux用戶下載。盡管sitback沒有提供安裝方便的RPM格式,但是sitback的安裝採用了基於GNU協議的自動安裝和配置的automake/autoconf模式,使得一般的Linux系統管理員能順利地安裝調試好sitback。
sitback的獲取和安裝
目前sitback官方網站www.mrbean.dk提供的 sitback最高版本為0.3.1。為了能最大程度地體現sitback的最佳性能,sitback的開發者建議Linux用戶不要把sitback的開發版本和Beta測試版本使用到實際的數據備份中去,以防出現意外。
安裝sitback源代碼壓縮包可以根據以下幾個簡單的步驟完成:
◆建立臨時解壓目錄 /temp;
◆把sitback壓縮包拷貝到/temp目錄,並使用「tar xvfz sitback-x.x.x.tar.gz」命令對sitback源代碼壓縮包進行解壓;
◆執行./configure;
◆執行make;
◆執行make install。
通過以上幾個步驟可以迅速地安裝好sitback。請注意使用超級用戶root身份對sitback進行安裝。
編譯完sitback源代碼壓縮包之後,接著要在用戶根目錄中的Home目錄下創建一個.sitback目錄。該目錄用來存放一些數據備份和刻錄時產生的臨時文件,以及一些腳本文件或磁碟驅動器參數文件。
同所有通過編寫腳本文件來運行的程序一樣,sitback也需要Linux用戶自行編寫備份和刻錄的腳本文件,並讓Linux系統把sitback當作一個備份進程(backup-daemon)來自動執行。使用高效安全的Webmin管理系統來自動執行sitback也很方便。總之,用最少的代碼編寫出適合Linux系統實際情況的腳本是最為安全、高效的。
將數據刻錄至光碟的條件
讓sitback自動備份指定的磁碟數據,並將備份的數據直接刻錄到光碟中去,必須考慮的條件主要有以下幾點:
◆sitback運行的時間,即備份數據時間;
◆要備份的源目錄;
◆要備份到的目的目錄;
◆選擇存儲介質,包括磁介質、光存儲介質等;
◆是否要對備份數據進行校驗比較,提高備份安全性;
◆備份模式,全備份或部分數據備份;
◆備份數據還原問題。
sitback提供了很多參數供用戶選擇,具體參數和用法可以參考sitback源代碼壓縮包里的開發文檔和詳細的使用手冊。
實例運用
實例1
假設某Linux伺服器中有以下這些目錄:
◆/usr/smbdata 包含大多數應用軟體和用戶數據文件;
◆/usr/grafik 包含有重要的圖形文件。
為了備份以上兩個目錄數據,可以編寫一個腳本文件,代碼及說明如下:
ARCHIVE=/dev/st0
#定義要備份的數據
(ARCHIVE表示要備份的磁碟驅動器、文件目錄,甚至主機,例如:
「backuphost:/dev/st0」、
「backup@backuphost:/dev/nrt0」、
「[email protected]:/tmp/temp_backup.tar.gz」等)
TARGET=/usr/smbdata
#要備份的目的目錄
TARGET=/usr/grafik
#要備份的目的目錄
COMPRESSION=YES
#備份模式為對數據進行壓縮後備份
VERIFY=YES
#對備份數據進行校驗
REPORTFILE=/usr/smbdata/latest_backup.txt
#產生備份報告文件
REPORTPRINTER=//penguin4/Canon
#列印機信息
SMBUSER=computer1
#SAMBA用戶端計算機名
SMBPASSWD=123abc
#訪問密碼
VOLUMENAME=Full backup - Taastrup
TIME=1;02;00
#備份時間,每天2:00進行備份
TIME=2;02;00
TIME=3;02;00
TIME=4;02;00
TIME=5;02;00
TIME=6;02;00
以上是一個簡單的數據自動備份腳本的樣本文件。如果想使用SysV初始化,可以在/etc/rc.d/init.d/中創建一個小的腳本文件來運行 sitback。在上述腳本最後一行加入「/usr/local/bin/sitback -d data」才能使得sitback自動運行。查看每次備份的情況時,可以打開臨時文件/.sitback/sitback.log,裡面有sitback 運行的詳細記錄。
實例2
使用sitback將Linux伺服器中數據自動備份、刻錄兩個步驟進行整合。
為了達到數據備份和光碟刻錄整合的目的,需要使用以下腳本來實現。它是來自sitback官方網站的樣板腳本。
# Full backup of /home/bean, excluding Images
#對/home/bean,目錄進行全備份
# [email protected] 2002
# Write the archive to my cd-writer at 0,0,0
#將備份數據在指定時間寫入CDR刻錄機中
# (Iomega ZIPCD 650, USB), use speed=2, so that i can 刻錄機硬體參數
# do other things while the backup is cooking. Also
# use on-the-fly to avoid too much temporary data.
# (my machine has no problem supporting this)
#
ARCHIVE=0,0,0
SPEED=2
#Iomega ZIPCD 650, USB刻錄機寫入速度,
CD ON THE FLY
#寫入方式
# It is a huge advantage to have the files directory available
# on the cd, not inside an archive, when restoring my
# setup, hence the type 'CDRW'
#
TYPE=CDRW
#光碟類型,CDRW可擦寫光碟
# Targets... Exclude Images
TARGET=/home/bean
#目標文件目錄
EXCLUDE=/home/bean/Images
#目標文件目錄中不用備份的目錄(即排除備份的目錄)
# Various stuff. Compression and verification will automagically
# be turned off by sitback, but i do not want the warnings either,
# so i just turn it off from the beginning...
#
VERIFY=NO
#對備份數據進行校驗
COMPRESSION=NO
#備份數據無需壓縮
# When done, put a backup report in /home/bean/backup.log
#
REPORTFILE=/home/bean/backup.log
#產生的備份報告文件及路徑
關於sitback備份數據的恢復及SSH等安全措施,此處不予舉例說明。總的來說,sitback是一款不可多得的Linux操作系統平台中優秀的數據備份和恢復工具,使用sitback可以使得企業實現安全而高效的備份。
『捌』 Linux裡面自動化部署工具有哪些
1. Puppet
Puppet是一款開源工具,旨在為系統管理員大大簡化自動化和報告工作。它基本上是款配置管理軟體,有助於配置和維護企業網路中的伺服器及其他系統。系統管理員通常每天要花大量時間重復做同樣的任務。他們總是想要使這些任務實現自動化,以便有更多的時間來處理其他項目或學習新的概念和腳本語言。管理員可以通過編寫腳本使任務實現自動化,但是在擁有大型網路的公司,腳本不是很方便。這時候,Puppet就大有用場,因為藉助Puppet,你可以:
為網路上的每個主機定義獨特的配置設置;
不斷監測網路,查找任何變動;
幫助高效地創建和管理用戶;
幫助管理每個開源工具的配置設置。
2. CHEF
Chef是另一款可供Linux系統管理員使用的流行的自動化工具。它用Ruby和Erlang編寫,對於配置和維護公司的伺服器大有幫助,無論貴公司擁有十台伺服器還是上百台。它還可以幫助你將雲端伺服器與亞馬遜EC2、OpenStack、RackSpace或谷歌雲整合起來。Chef可以將你的基礎設施轉變成代碼,那樣藉助代碼,你只要更改幾行代碼,就能輕松撤下一台伺服器,從而讓你輕松管理伺服器。物理節點還意味著:將變更內容部署到生產環境之前,可以對它輕松進行測試,你還可以輕松控制針對代碼的每次更新的版本。Chef DK為你提供了測試和管理配置的所有工具,Chef Server充當你所有「菜譜」(recipe)的存儲庫,可以管理與伺服器連接的每個節點。Chef客戶軟體在每個客戶端上運行,時不時收到伺服器方面的信息,從而更新其配置設置。
3. CFEngine
面向Linux系統管理員的下一款自動化工具是CFEngine,這是另一個領先的自動化系統,可幫助你輕松管理整套基礎設施,並使之實現自動化。一旦你使用CFEngine為網路中的系統定義了配置,那麼CF Engine就會自動確保配置符合規范。不用說,如果你的網路中有10個或100個節點,可以在短短幾秒內更新或改動任何一個節點或所有節點。CFEngine之所以受到許多Linux系統管理員的青睞,是由於它運行成本低、響應速度快、具有自癒合功能。
4. Ansible
Ansible是Red Hat提供的一款開源配置管理和IT企業自動化軟體,隨帶一種簡單的編程語言,讓系統管理員能夠高效地處理自動化和配置過程。Ansible由控制機器和控制機器控制的節點組成。節點是通過SSH來加以控制的。Ansible的主要特點之一是代理並不是部署到節點 ,但是完全藉助SSH來進行通信。易學易用、具有一致性、高可靠性和安全性是讓Ansible脫穎而出的其他特性。Ansible的唯一局限就是無法配置裸機和虛擬機。
5. Foreman
Foreman是另一種用於取證分析的開源配置管理工具。Foreman提供了儀錶板,我們可以通過儀錶板來配置裸機伺服器和虛擬機。默認情況下,無論我們何時安裝Foreman,它都使用Puppet作為配置工具。不過藉助插件,Foreman還支持與其他配置管理工具整合起來,比如Chef、Puppet、Ansible、Salt及其他眾多工具。Foreman自動化工具還隨帶各種各樣的介面,包括命令行介面、Web前端以及REST API。Foreman的其他一些顯著功能包括如下:
通過儀錶板,管理Puppet模塊和puppet類方面的改動;
很容易從Foreman儀錶板來管理Puppet環境;
由於儀錶板,創建主機群(Hosts Group)以及為主機群添加puppet模塊變得很輕松;
可以從Foreman儀錶板,輕松添加Puppet模塊或推送到節點。
6. Katello
Katello是另一種開源自動化工具。換而言之,我們可以說Katello是一種開源版的Red Hat satellite Server;如果我們不想花錢在企業產品及其支持上,就可以用它來代替Red Hat satellite Server。Katello已被Foreman收購,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:
給基於Linux的伺服器(RHEL和CentOS )打補丁;
使用Pulp Service來同步代碼庫;
使用Foreman進行各種配置;
它還可以處理訂閱內容管理,並審計所有已部署的軟體包;
藉助Katello,你可以為所有主機創建主機群,另外還可以在單一主機或一群主機上批量執行操作。
7. Nagios
Nagios現在名為Nagios Core,它是一種開源自動化和監控工具,可以管理基礎設施中的所有系統。它還提供警報服務,一旦察覺到你的網路中哪裡有問題,就會提醒系統管理員。藉助SNMP以及Nagios,系統管理員還可以控制並管理列印機、路由器和交換機。Nagios讓我們得以創建事件處理工具,一旦某個應用程序及其服務停運,就可以自動重啟出現故障的那個應用程序及其服務。
