具備腳本知識的系統管理員與其他系統管理員有著明顯的區別。腳本是一門“系統管理員”創造的藝術。這門藝術需要了解系統本身的相關知識,系統管理命令的語法,編程和算法知識以及至少一門腳本編程語言。對系統管理員來說編寫腳本有很多選擇,每種腳本語言都有著自己獨特的語法和優點。腳本語言之間幾乎沒有相似之處,但也不會像外星語那樣難以讀懂。腳本語言既可用來管理系統,也可以用做Web開發。基於服務端和基於客戶端的腳本語言很少。客戶端腳本語言大多數用來在浏覽器裡顯示內容以及與用戶進行交互。服務器端腳本語言通常用來管理系統或Web服務。本文中,我們只會關注那些用作系統管理的腳本語言。讓我們開始吧!
關於腳本應該知道的事情:
- #!/path/of/the/cli
例如bash
- #!/bin/bash
或者perl
- #!/usr/bin/perl
‘#!’這個符號代表了執行該腳本需要調用的程序。
Bash
在Linux和UNIX世界裡,bash腳本的數量最多。正如我們在很多文章中提到的那樣,bash也是最受到大家喜愛的。基本上,bash是一個具有解釋功能的命令行shell。它能夠用作編程並且滿足大多數的基本編程需求。在使用變量之前無需聲明,也不需要知道變量的類型。它的缺點在於,使用bash沒有其他的庫可以利用。你可以使用的只有/bin/bash(或/bin/sh)。當你聲明一個變量時,你無需在前面使用$符號,但是在使用時你需要在前面加上$表明它是一個“變量”。bash非常容易編寫,Linux、UNIX以及安裝了cywin程序的Windows都帶有bash。如果你身為一名系統管理員但是不會bash腳本編程,你最好馬上開始學習。這篇文章裡列舉了很多好的參考書。下面是一段簡單的bash腳本。
- #!/bin/bash
- USER=$1
- echo "Adding User $USER in group users..."
- /usr/sbin/useradd -g users $USER
- if [ $? == 0 ]; then
- /usr/bin/passwd $USER
- else
- echo "Sorry, User addition failed"
- fi
Perl
基本上,Perl可以看做UNIX和Windows系統上的(圖靈)完備編程語言。Perl的含義是實用報表提取語言(Practical Extraction and Report Language)。Perl是一種通用編程語言,起初開發Perl是用於文字處理,現在的使用范圍非常廣泛,包括系統管理、Web開發、網絡編程、甚至GUI開發等許多場合。
它的優點是易於使用且同時支持面向過程和面向對象編程。Perl是模塊化的,易於調用第三方模塊。盡管設計的目標是圖靈完備的編程語言,但是自1993年面世開始Perl一直被用作編寫系統管理腳本。Perl既支持編譯也可以解釋執行,因此Perl比bash腳本更安全。當錯誤發生時,bash腳本並不知道;然而,如果在執行之前編譯過程中有任何錯誤發生Perl會拒絕啟動執行。一段小的Perl腳本會讓你體會Perl語言的風格。#之後的內容是注釋。這段腳本會創建一個包含1000個隨機數的數組,每個隨機數包含16個數字:
- #!/usr/bin/perl
- my @numbers;
- srand (time);
- for ($i=0; $i<1000; $i++)
- {
- $a=int 10000000000*rand();
- $b=int 10000000000*rand();
- $c = $a . $b;
- push @numbers,substr($c,0,16)."\n";
- }
- print @numbers;