1. 程式人生 > 實用技巧 >Linux基本網路配置和指令碼程式設計中函式的應用

Linux基本網路配置和指令碼程式設計中函式的應用

linux的網路屬性配置

1、 圖形介面配置

鍵入命令[[email protected] ~]# system-config-network-gui


選中要修改的網絡卡雙擊或點選edit對其ip地址、子網掩碼和預設閘道器進行編輯。

2、 基於字元的圖形介面

鍵入命令[[email protected] ~]# system-config-network-tui


其中兩個選項分別配置主機網絡卡資訊和預設dns服器

3、 從配置檔案中進行修改

配置檔案目錄/etc/sysconfig/network-scripts/ifcfg-eth0

1 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

2 DEVICE=eth0

3 BOOTPROTO=static

4 DHCPCLASS=

5 HWADDR=00:0C:29:1E:74:BA

6 ONBOOT=yes

7 IPADDR=192.168.0.155

8 NETMASK=255.255.255.0

9 GATEWAY=192.168.0.254

10 USERCTL=no

11 PEERDNS=no

使用vim編輯器進行網絡卡各項引數的修改

DEVICE=裝置名稱

BOOTPROTO=裝置啟用協議名稱{dhcp|static|boottp|none}

HWADDR=mac地址

ONBOOT=此裝置隨系統啟動

IPADDR=ip

地址

NETMASK=子網掩碼

GATEWAY=預設閘道器

USERCTL=是否允許所有使用者啟/禁用該裝置

PEERDNS=是否同意dhcp修改本機的dns伺服器地址

使用 ifconfig eth0 ip地址/CIDR或子網掩碼

將直接修改當前ip地址,但重啟後失效。

DNS配置:

dns配置檔案:/etc/resolv.conf

1 ; generated by /sbin/dhclient-script

2 search example.com

3 nameserver 192.168.0.254

search 當你輸入非完全格式域名時,自動補全的內容

nameserver dns伺服器的地址

主機名的修改

主機名配置檔案/etc/sysconfig/network

1 NETWORKING=yes

2 NETWORKING_IPV6=yes

3 HOSTNAME=server55.example.com

NETWORKING_IPV6=是否支援ipv6

HOSTNAME=在網路中顯示的主機名

新增路由表

# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

add : 新增一條路由規則

del : 刪除一條路由規則

-net : 目的地址是一個網路

-host : 目的地址是一個主機

target : 目的網路或主機

netmask : 目的地址的網路掩碼

gw : 路由資料包通過的閘道器

dev : 為路由指定的網路介面

注意:不論使用以上哪一種方法修改主機的網路配置,都必須重新啟動網路配置或者禁用啟用網絡卡才能生效。

重啟網路服務命令:

[[email protected] ~]# service network restart

禁用啟用網絡卡:

[[email protected] ~]# ifdown eth0 && ifup eth0

與指令碼程式設計的知識補充:

建立臨時檔案

mktemp 檔名

-d 生成目錄為臨時檔案屬性

mktemp 檔名+XXXX

生成檔案將自動生成X格式的隨機數

case判斷

case 變數 in

條件1)

語句

;;

條件2

語句

;;

.

.

.

* #*表示除去上所有條件之外的所有情況

語句

;;

esac

函式的用法

function 函式名{

函式體

}

在指令碼中直接通過函式名呼叫。

下面是一個程式分別使用無函式、有函式和引數傳遞的三種寫法:

寫一個指令碼:
1、提示使用者可以輸入”mem"檢視本機實體記憶體使用資訊,"swap"顯示虛擬記憶體使用資訊;
2、當用戶輸入mem時,獲取當前主機實體記憶體的大小,已經使用的空間及空閒空間大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
3、當用戶輸入"swap"時,獲取當前主機虛擬記憶體的大小,已經使用的空間及空閒空間的大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
4、其它資訊則說明是錯誤輸入;

不使用函式:
1 #!/bin/bash
 2 #:Title:
 3 #:Synopsis:memory/swap test
 4 #:DateTime:2011-07-26 13:02:18
 5 #:Version:Unknow
 6 #:Author: redhat_hu
 7 #:Option:None
 8 read -p "input (m)mem/(s)swap to check mem/swap:" I
 9 case $I in
 10 'm')
 11 free -m | awk '/Mem:/{print "Memory:"$2"M"}'
 12 TOTAL=`free |awk '/Mem:/{print $2}' `
 13 USED=`free |awk '/Mem:/{print $3}' `
 14 PER=$[$USED*100/$TOTAL]
 15 if [ "$PER" -gt '90' ];then
 16 echo -e "\033[31mwarnning:used is $PER % memory beyond 90% \033[0m"
 17 else
 18 echo "used memory is $PER"
 19 fi
 20 ;;
 21 's')
 22 free -m | awk '/Swap:/{print "Swap:"$2"M"}'
 23 TOTAL=`free |awk '/Swap:/{print $2}' `
 24 USED=`free |awk '/Swap:/{print $3}' `
 25 PER=$[$USED*100/$TOTAL]
 26 if [ "$PER" -gt '90' ];then
 27 echo -e "\033[31m warnning:used swap is $PER % beyond 90% \033[0m "
 28 else
 29 echo -e "\033[32m used Swap is $PER %\033[0m"
 30 fi
 31 ;;
 32 *)
 33 echo "error input!"
 34 ;;
 35 esac

使用函式:
1 #!/bin/bash
 2 #:Title:
 3 #:Synopsis:memory/swap test by function
 4 #:DateTime:2011-07-26 13:25:43
 5 #:Version:Unknow
 6 #:Author: redhat_hu
 7 #:Option:None
 8 
9 function MEMORY {
 10 free -m | awk '/Mem:/{print "Memory:"$2"M"}'
 11 TOTAL=`free |awk '/Mem:/{print $2}' `
 12 USED=`free |awk '/Mem:/{print $3}' `
 13 PER=$[$USED*100/$TOTAL]
 14 if [ "$PER" -gt '90' ];then
 15 echo -e "\033[31mwarnning:used is $PER % memory beyond 90% \033[0m"
 16 else
 17 echo "used memory is $PER"
 18 fi
 19 }
 20 function SWAP {
 21 free -m | awk '/Swap:/{print "Swap:"$2"M"}'
 22 TOTAL=`free |awk '/Swap:/{print $2}' `
 23 USED=`free |awk '/Swap:/{print $3}' `
 24 PER=$[$USED*100/$TOTAL]
 25 if [ "$PER" -gt '90' ];then
 26 echo -e "\033[31m warnning:used swap is $PER % beyond 90% \033[0m "
 27 else
 28 echo -e "\033[32m used Swap is $PER %\033[0m"
 29 fi
 30 }
 31 
32 read -p "input to check m(memory)/s(swap):" A
 33 case $A in
 34 'm')
 35 MEMORY;;
 36 's')
 37 SWAP;;
38 *)
 39 echo "error input!"
 40 ;;
 41 esac

使用函式傳遞引數:
1 #!/bin/bash
 2 #:Title:
 3 #:Synopsis:memory/swap test by funtion deliver
 4 #:DateTime:2011-07-26 13:35:10
 5 #:Version:Unknow
 6 #:Author: redhat_hu
 7 #:Option:None
 8 function DELIVERY {
 9 case $1 in
 10 'm')
 11 free -m | awk '/Mem:/{print "Memory:"$2"M"}'
 12 TOTAL=`free |awk '/Mem:/{print $2}' `
 13 USED=`free |awk '/Mem:/{print $3}' `
 14 PER=$[$USED*100/$TOTAL]
 15 if [ "$PER" -gt '90' ];then
 16 echo -e "\033[31mwarnning:used is $PER % memory beyond 90% \033[0m"
 17 else
 18 echo "used memory is $PER"
 19 fi
 20 ;;
 21 's')
 22 free -m | awk '/Swap:/{print "Swap:"$2"M"}'
 23 TOTAL=`free |awk '/Swap:/{print $2}' `
 24 USED=`free |awk '/Swap:/{print $3}' `
 25 PER=$[$USED*100/$TOTAL]
 26 if [ "$PER" -gt '90' ];then
 27 echo -e "\033[31m warnning:used swap is $PER % beyond 90% \033[0m "
 28 else
 29 echo -e "\033[32m used Swap is $PER %\033[0m"
 30 fi
 31 ;;
 32 *)
 33 echo "error input!"
 34 ;;
 35 esac
 36 }
 37 read -p "input (m)mem/(s)swap to check mem/swap:" D
38 DELIVERY $D

轉載於:https://blog.51cto.com/evolution/624091