1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash # ping探測主機在線狀態 for i in `seq 254`;do if ping -c 1 172.16.0.$i &> /dev/null;then echo -e "\033[32m172.16.0.$i\033[0m" else echo -e "\033[31m172.16.0.$i\033[0m" fi done
2、如何給網絡接口配置多個地址,有哪些方式?
(1) 使用ifcongig [root@lab1 ~]# ifconfig eno16777736:0 172.16.0.10/16 up [root@lab1 ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.146.130 netmask 255.255.255.0 broadcast 192.168.146.255 ether 00:0c:29:56:c6:51 txqueuelen 1000 (Ethernet) RX packets 17488 bytes 4626694 (4.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7106 bytes 1489317 (1.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.0.10 netmask 255.255.0.0 broadcast 172.16.255.255 ether 00:0c:29:56:c6:51 txqueuelen 1000 (Ethernet) (2) 使用ip命令 [root@lab1 ~]# ip addr add 192.168.140.150 dev eno16777736 [root@lab1 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:56:c6:51 brd ff:ff:ff:ff:ff:ff inet 192.168.146.130/24 brd 192.168.146.255 scope global dynamic eno16777736 valid_lft 982sec preferred_lft 982sec inet 172.16.0.10/16 brd 172.16.255.255 scope global eno16777736:0 valid_lft forever preferred_lft forever inet 192.168.140.150/32 scope global eno16777736 valid_lft forever preferred_lft forever
3、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash # 統計目錄中的文件 #分別定義變量表示K開頭和S開頭的文件數 declare -i knum declare -i snum knum=0 snum=0 for str in $(ls /etc/rc.d/rc3.d);do if echo $str | grep "^K" &> /dev/null;then echo "$str stop" let knum++ else echo "$str start" let snum++ fi done echo -e "S開頭的文件數:${snum}\nK開頭的文件數:${knum}"
4、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash # 計算傳入用戶的id之和 if [ $# -lt 1 ];then echo "請輸入至少一個用戶名" exit 1 fi declare -i idsum=0 for name in $@;do if id -u $name &> /dev/null;then let idsum+=$(id -u $name) else echo "${name}這個用戶不存在,不參與運算" fi done echo "這些用戶的id之和是:$idsum" 執行結果: [root@han scripts]# ./user.sh han 這些用戶的id之和是:500 [root@han scripts]# ./user.sh ha han ha這個用戶不存在,不參與運算 這些用戶的id之和是:500 [root@han scripts]# ./user.sh han mail 這些用戶的id之和是:508
5、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash #統計傳入目錄的文件類型 if [ $# -lt 1 ];then echo "請輸入至少一個目錄" exit 1 fi #定義目錄數,文件數 declare -i dnum=0 declare -i fnum=0 # 循環傳入的目錄參數 for parms in $@;do if [ ! -d $parms ];then echo "${parms}不是目錄,請重新輸入" fi # 循環某個目錄下的一級子目錄或文件 for files in `ls $parms`;do if [ -d ${parms}/$files ];then file ${parms}/${files} [ $? -eq 0 ] && let dnum++ else file ${parms}/$files [ $? -eq 0 ] && let fnum++ fi done done echo "全部子目錄個數: $dnum" echo "顯示文件類型的文件數: $fnum" 執行結果 [root@han scripts]# bash filetype.sh /root /tmp /root/anaconda-ks.cfg: ASCII English text /root/Desktop: directory /root/Documents: directory /root/Downloads: directory /root/install.log: ASCII text /root/install.log.syslog: ASCII text /root/Music: directory /root/Pictures: directory /root/Public: directory /root/scripts: directory /root/Templates: directory /root/Videos: directory /tmp/keyring-Sj3EIa: directory /tmp/pulse-9toHfrLBLivN: directory /tmp/pulse-uIUgIls6jl24: directory 全部子目錄個數: 12 顯示文件類型的文件數: 3
6、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash #description:判斷用戶是否普通用戶 #version : 0.1 #author: han #date: 2017-2-22 if [ $# -lt 1 ];then echo "請輸入至少一個用戶名" exit 1 fi if id $1 &> /dev/null;then if [ `id -u $1` -ge 500 ];then echo "$1是普通用戶" fi fi 執行結果: [root@han scripts]# bash commonuser.sh root [root@han scripts]# bash commonuser.sh han han是普通用戶
7、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash # ping測試 # author:han trap 'echo quit;exit 1' INT for i in {20..100};do if ping -c 1 -W 1 172.16.250.$i &> /dev/null; then echo "172.16.250.${i} is up" fi done 執行結果: [root@han scripts]# bash ping2.sh ^Cquit
8、打印九九乘法表;
#!/bin/bash #description: 九九乘法表 #author: han for j in {1..9};do #for i in {1..${j}};do 這種方式有問題,獲取不到$i的值 for i in `seq $j`;do echo -n "$i X $j = $[$i*$j] " done echo done 執行結果: [root@han scripts]# bash chengfa.sh 1 X 1 = 1 1 X 2 = 2 2 X 2 = 4 1 X 3 = 3 2 X 3 = 6 3 X 3 = 9 1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16 1 X 5 = 5 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25 1 X 6 = 6 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 6 X 6 = 36 1 X 7 = 7 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 6 X 7 = 42 7 X 7 = 49 1 X 8 = 8 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64 1 X 9 = 9 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81
原創文章,作者:hansj,如若轉載,請注明出處:http://www.www58058.com/69834
非常認真的作業,值得其他同學學習。