shell指令碼習題

2021-09-30 13:58:19 字數 2904 閱讀 3807

1.查詢當前網段(10.1.1.0/24)內存活ip使用者,重定向到/tmp/ip.txt檔案中

ping -c 次數 -w 超時時間 ip

#!/bin/bash

ip=10.1.1.0/24

ip=$  

#ip=10.1.1

for i in `seq 1 254`;do

(ping -c 1 -w 1 $ip.$i > /dev/null 2>&1

if [ $? -eq 0 ]; then

echo $ip.$i >> /tmp/ip.txt 

else

echo "$ip.$i is dead"

fi) &

done

2.列印當前使用者的使用者名稱,和uid

id -un 

id -u

3.自動建立使用者student101-150,且密碼為password101-150

#!/bin/bash

for i in `seq 101 150`; do

id student$i > /dev/null 2>&1

if [ $? -eq 0 ]; then

echo "user student$i exist"

else

useradd student$i 

echo "user student$i added"

echo "password$i" | passwd --stdin student$i > /dev/null 2>&1

fidone

4.編寫乙個shell指令碼,檢測當前伺服器正在執行的網路服務,並輸出服務名

#!/bin/bash

netstat -tulnp | awk  

-f'/' '/^tcp|^udp/' | sort -u

5.根據/etc/passwd檔案內容,輸出「the line 1(行數) is root(使用者名稱)」依次類推

awk -f: '' /etc/passwd

#!/bin/bash

#shell

n=1while read line;  

douser=$

echo "the line $n is $user"

let n++

done < /etc/passwd

6.建立乙個shell指令碼 /root/test6.sh 

--當你輸入「kernel」引數時,此shell指令碼就輸出「user「  

--當你輸入」user「引數時,此shell指令碼就輸出」kernel」

--當此指令碼不輸入任何引數或者輸入的引數是按照要求輸入的話,那麼就會輸出標準錯誤「usage:/root/program kernel|user

#!/bin/bash

case $1 in

kernel)

echo "user"

;;user)

echo "kernel"

;;*)

echo "usage: $0 kernel|user"

exit 1

esac

7.列印無密碼使用者

awk -f: '$2 == "!!" || $2 =="**"' /etc/shadow

8.寫乙個指令碼,顯示當前系統上shell為-s指定型別的shell,並統計其使用者總數。-s選項後面跟的引數必須是/etc/shells檔案中存在的shell型別,否則不執行此指令碼。另外,此指令碼還可以接受--help選項,以顯示幫助資訊。指令碼執行形如:

./test8.sh -s /bin/bash

顯示結果形如:

/bin/bash,3users,they are:

root,redhat,gentoo

#!/bin/bash

if [ $# -eq 2 ]; then

case $1 in 

-s)flag=`grep "$2" /etc/shells`

if [ -n $flag ]; then

user_number=`grep "$2$" /etc/passwd | wc -l`

user_list=`grep "$2$" /etc/passwd | awk -f: '' `

echo  

"$2,$users,they are: "

echo $user_list

fi;;

--help|-h)

echo "usage: $0 -s shell_type" 

;;*)

echo "syntax error,use -h to get help"

exit 1

esac

else

echo "error,missing parameter"

exit 1

fi

9.監控磁碟的使用率,>90%時給root發郵件

#!/bin/bash

df -p  

| sed '1d' | while read line; do

usage=`echo $line | awk ''` 

usage=$

disk=`echo $line | awk ''`

if [ $usage -gt 90 ]; then

echo "$disk is in a high usage!" | mail -s "warnning!!" root@localhost

fidone

10.ldd是用來檢視二進位制程式的共享庫檔案的,現在通過指令碼實現把庫檔案自動的複製到固定目錄(/newroot)的相對應的目錄中,如源庫檔案:/lib/a.so.1,應複製到/newroot/lib64/libtinfo.so.5

11.檢視主機網絡卡流量,每2秒顯示1次當前的速率(sleep 2程式睡眠2秒)

shell指令碼習題練習

find var log type f wc l f1 f2.txt shf1 f2.txt bin sh cmd ping w 2 c 2 ip 192.168.1.for n in seq 254 do done wait ip address mac address inte ce stati...

shell指令碼練習題

bin bash 寫乙個指令碼 1.設定變數file的值為 etc passwd 2.依次向 etc passwd中的每個使用者問好,並且說出對方的id是多少 形如 hello,root,your uid is 0.file etc passwd count wc l cut f1 d for i ...

shell指令碼練習題

bin bash echo 九九乘法表 注意 之間不能有空格 加減乘除的格式 還有轉義字元 ne for i 1 i 9 i i 1 do for j 1 j i j j 1 do result i j echo ne i j result t done echo done bin bash num...