集中練習6-bash腳本

集中練習6-bash腳本

1. 寫一個腳本,使用ping命令探測172.16.250.1-172.15.250.254之間所有主機的在線狀態;在線的主機使用綠色顯示;不在線的主機使用紅色顯示
“`
#!/bin/bash
#
for i in {1..254}; do
ping 172.16.250.$i -w 1 -c 1 &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo -e “\033[32mHost 172.16.250.$i is online.\033[0m ”
else
echo -e “\033[31mHost 172.16.250.$i is offline.\033[0m ”
fi
done
“`
2. 如何給網絡配置多個地址,有哪些方式?
“`
(1) 通過ip命令添加
~]# ip addr add <IP_ADDR>/<MASKLEN> dev <IFACE_NAME>
(2) 針對CentOS7,使用nmtui命令添加
(3) 使用ifconfig命令
~]# ifconfig IFACE_LABEL IPADDR/NETMASK
(4) 可以通過復制原有配置文件到新文件IFACE:0,然后修改IP地址,網卡別名不支持動態獲取地址
“`
3. 寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少?
“`
#!/bin/bash
#
declare -i numk=0
declare -i nums=0
for files in `ls /etc/rc.d/rc3.d`; do
if [[ $files =~ ^K[[:digit:]].* ]]; then
echo “$files stop.”
let numk+=1
elif [[ $files =~ ^S[[:digit:]].* ]]; then
echo “$files start.”
let nums+=1
fi
done
echo “The number for Kfiles is $numk.”
echo “The number for Sfiles is $nums.”
“`
4. 寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
“`
#!/bin/bash
#
echo -e “This is a script for calculate the summation for the user UID you entered, you can enter as many times as you want until you enter quit, and the script will calculate the summation for all these users’ UID for you. \n”
read -p “Please enter a username: ” user
declare -i sum=0
until [ $user == ‘quit’ ]; do
if id $user &> /dev/null; then
declare -i UserID=`id -u $user`
let sum+=$UserID
read -p “Please reenter a username: ” user
else
echo “User $user does not exist.”
read -p “Please reenter a username: ” user
fi
done
echo “The summation of UID for all the users you entered is $sum.”
“`
5. 寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄,且一共顯示了多少個文件的內容類型;
“`
#!/bin/bash
#
[ -e /tmp/filetype.txt ] && rm -f /tmp/filetype.txt
read -p “Please enter a directory: ” dirc
declare -i typenum=0
declare -i dircnum=0
until ls $dirc &> /dev/null; do
echo “The directory you entered does not exist.”
read -p “Please enter a directory: ” dirc
done
touch /tmp/filetype.txt
until [ $dirc == ‘quit’ ]; do
let dircnum+=1
for dir_file in `ls $dirc`; do
file_type=`file -b $dirc/$dir_file | cut -d’,’ -f1`
echo $file_type | grep “symbolic link” &> /dev/null && file_type=’symbolic link’
cat /tmp/filetype.txt | grep “$file_type” &> /dev/null
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo $file_type >> /tmp/filetype.txt
let typenum+=1
fi
done
read -p “Please enter a directory: ” dirc
done
echo “You totally entered $dircnum directories.”
echo “There are $typenum types of file in the directories you entered.”
rm -f /tmp/filetype.txt
“`
6. 寫一個腳本
(1) 通過命令行傳遞一個參數給腳本,參數為用戶名;
(2) 如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
“`
#!/bin/bash
#
read -p “Please enter a user: ” user
until [ $user == ‘quit’ ]; do
if ! id $user &> /dev/null; then
echo “The user you entered doesn’t exist.”
read -p “Please enter a user: ” user
else
declare -i UserID=`id -u $user`
if [ $UserID -ge 500 ]; then
echo “User $user is a common user.”
fi
read -p “Please enter a user: ” user
fi
done
“`
7. 寫一個腳本,用ping命令測試172.16.250.20-172.16.250.100之間有哪些主機在線,將在線的顯示出來;
“`
#!/bin/bash
#
for i in {20..100};do
ping -c 1 -W 1 172.16.250.$i &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo “Host 172.16.250.$i is online.”
fi
done
“`
8. 打印九九乘法表;

for循環
“`
#!/bin/bash
#
for a in {1..9}; do
for b in `seq 1 $a`; do
echo -n -e “$X${a}=$[$*${a}]\t”
done
echo
done
“`
while循環
“`
#!/bin/bash
#
declare -i a=1

while [ $a -le 9 ]; do
declare -i b=1
while [ $b -le $a ]; do
echo -n -e “$X${a}=$[$*${a}]\t”
let b++
done
let a++
echo
done
“`
until循環
“`
#!/bin/bash
declare -i a=1

until [ $a -gt 9 ]; do
declare -i b=1
until [ $b -gt $a ]; do
echo -n -e “$X${a}=$[$*${a}]\t”
let b++
done
let a++
echo
done
“`
9. 打印逆序的九九乘法表;

for循環
“`
#!/bin/bash
#
for a in `seq 1 9 | sort -r`; do
for b in `seq 1 $a | sort -r`; do
echo -n -e “$X${a}=$[$*${a}]\t”
done
echo
done
“`
while循環
“`
#!/bin/bash
#
declare -i a=9
while [ $a -ge 1 ]; do
declare -i b=$a
while [ $b -ge 1 ]; do
echo -n -e “$X${a}=$[$*${a}]\t”
let b–
done
let a–
echo
done
“`
until循環
“`
#!/bin/bash
#
declare -i a=9
until [ $a -lt 1 ]; do
declare -i b=$a
until [ $b -lt 1 ]; do
echo -n -e “$X${a}=$[$*${a}]\t”
let b–
done
let a–
echo
done
“`

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89523

(0)
N27_sapbcsN27_sapbcs
上一篇 2017-12-04 21:20
下一篇 2017-12-05 10:53

相關推薦

  • Linux文本處理三劍客之awk詳解

    前言 awk是一款強大的報告生成器,不同于sed和grep,它的側重點是如何把文本信息更好的展示出來,常用與統計和格式化輸出。awk相當于微型的shell,有著自己一套語法結構,例如:循環結構,數組,條件判斷,函數,內置變量等功能。處理對象一般純文本文件或純文本信息。 用法詳解 基本語法 awk [options] 'progra…

    Linux干貨 2015-04-29
  • 第9天:壓縮,任務,rpm包

    http://note.youdao.com/yws/public/redirect/share?id=b3e4fc37bdd98991638dce69ce3eea53&type=false

    Linux干貨 2016-08-18
  • 關于grub的一些實驗

    關于grub的一些實驗 手動引導進入系統 也就是寫 grub.conf文件 改grub界面圖片 1、進入/root/grub目錄發現里面有很多東西,查看grub.conf可以知 2、我們查看下圖片的格式 這是一個gzip壓縮的圖片文件 用vim可以查看開頭經查得知這是一個640*480的文件而且只支持14色 3、自定義圖片 先照一張圖片用工具改成這種想要的格…

    Linux干貨 2016-09-16
  • 文本處理工具補充之sed命令

    sed:stream editor,行編輯器         sed命令工作原理:它在處理數據時,每次只處理一行,首先把當前處理的行存儲在臨時緩沖區中,我們稱這個緩沖區稱為“”模式空間“,接著用sed命令處理緩沖區中的內容,處理完后,把緩沖區中的內容送到屏幕上顯示出來,接著去處理…

    Linux干貨 2016-08-11
  • 磁盤、文件系統管理

    linux磁盤、文件系統管理 硬盤:機械硬盤、固態硬盤     計算硬盤速度:IoPs:(Io  per  second ) 每秒20次 機械硬盤:     track:磁道     平均尋道時間  &nbsp…

    Linux干貨 2016-08-25
  • 第三周作業

      1. 列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u root 2. 取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# who | tail -1 roo…

    Linux干貨 2016-12-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-12-08 16:40

    腳本沒有問題,建議排版可以截圖下來。不然不好分析,也不好看。

欧美性久久久久