bash腳本編程實例
-
1.寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態
- 在線的主機使用綠色顯示
-
不在線的主機使用紅色顯示
#!/bin/bash for i in {1..254};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/null;then echo -e "\033[32m 172.16.250.${i} \033[0m" else echo -e "\033[31m 172.16.250.${i} \033[0m" fi done
-
2.如何給網絡端口配置多個地址,有哪些方式?
- ifconfig IFACE_LABEL IPADDR netmask NETMASK
- ip addr add IFADDR dev IFNAME label LABEL
-
cp /etc/sysconfig/network-scripts/ifcfg-IFACE /etc/sysconfig/network-scripts/ifcfg-IFACE_LABEL,然后修改該配置文件
BOOTPROTO=none(必須設置為靜態) DEVICE=IFACE_LABEL IPADDR=ip NETMASK=netmask GATEWAY=dateway
-
3.寫一個腳本,完成一下功能
- 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭和S開頭的文件若干
- 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串
-
顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串
#!/bin/bash for i in $(ls /tmp/njy/files/|grep "^s") do echo "${i} start" done for i in $(ls /tmp/njy/files/|grep "^k") do echo "${i} stop" done
-
4.寫一個腳本,完成以下功能
- 腳本能接受用戶名作為參數
-
計算此些用戶的ID之和
#!/bin/bash echo -n "please input some usernames:" read -a usernames while true;do if [ ${#usernames[*]} -eq 0 ];then echo -n "please input some usernames again:" read -a usernames else break fi done declare -i sum=0 declare -i count=0 for i in ${usernames[*]};do if !id $i &>> /dev/null;then echo "$i is not existing." continue else sum+=$(id -u $i) count+=1 fi done echo "$count users id count is: $sum"
-
5.寫一個腳本
- 傳遞一些目錄給此腳本
- 逐個顯示每個目錄的所有一級文件或者子目錄的內容類型
-
統計一個有多少個目錄,并且一共顯示了多少個文件的內容類型
#!/bin/bash # read -p "please input some paths:" paths while true;do if [[ -z $paths ]];then read -p "please input some paths again:" paths else break fi done for i in $paths;do if [[ ! -e $i ]];then continue else pathfiles=$(ls -l $i|grep -v "^d"|awk -F' ' '{print $9}'|sed "/^$/d;s#^#$i/#") pathdirs=$(ls -l $i|grep "^d"|awk -F' ' '{print $9}|sed "/^$/d;s#^#$i/#"') if [ ${#pathfiles} -ge 1 ];then echo "file types and count below $i are:" file $pathfiles|cut -d: -f2|sed 's/^[[:space:]]*//g'|tr '\n' ';'|awk -F';' '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}' else echo "there is no file belowing $i." fi if [ ${#pathdirs} -ge 1 ];then echo "dir types and count below $i are:" file $pathdirs|cut -d: -f2|sed 's/^[[:space:]]*//g'|tr '\n' ';'|awk -F';' '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}' else echo "there is no dir belowing $i." fi fi done
-
6.寫一個腳本
- 通過命令行傳遞一個參數給腳本,參數為用戶名
-
如果用戶的id號大于等于500,則顯示此用戶為普通用戶
#!/bin/bash if [ $# -eq 0 ];then echo "need a user." exit 1 fi id1=$(id -u $1) if [ $id1 -ge 500 ];then echo "this is a common user." else echo "this is system user or root user." fi
-
7.寫一個腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來
#!/bin/bash for i in {20..100};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/null;then echo "172.16.250.${i}" else continue fi done
-
8.打印九九乘法表
#!/bin/bash for i in {1..9};do for ((j=1;j<=i;j++));do echo -e -n "${i}x${j}=$[$i*$j]\t" done echo done
原創文章,作者:N27_xiaoni,如若轉載,請注明出處:http://www.www58058.com/85050
腳本是運維的必備技能 也是運維自動化的切入點。作業完成 的非常 不錯,再接再勵。