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