腳本進階,函數調用實例練習

一、練習:腳本:判定192.168.0.200-192.168.0.254之間哪些主機在線,要求:

1、使用函數來實現一臺主機的判定過程:

2、在主程序中調用此函數判定指定範圍內的所有主機的在線情況,

vim ping.sh

#!/bin/bash

#

PING() {

for i in {200..254};do

if ping -c 1 -w 1 192.168.0.$i &> /dev/null; then

echo "192.168.0.$i is up"

else

echo "192.168.0.$i is down"

fi

done

}

PING

chmod +x ping.sh


把所有功能寫入函數體中,無法適用更廣泛的環境,上面腳本就是這樣,


下面實例在函數中使用位置變量,在主程序中調用函數體使腳本使用環境更寬泛

vim ping.sh

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null; then

echo "192.168.0.$i is up"

else

echo "192.168.0.$i is down"

fi

done

}

for i in {200..254};dp

PING 192.168.0.$i

done


for  i in {200..254}; do

PING 172.16.100.$i

done



下面實例函數體使用return參數,在主程序中判定IP地址up和down

vim ping.sh

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null; then

return 0

else

return 1

fi

done

}

for i in {200..254};dp

PING 192.168.0.$i

if [ $? -eq 0 ]; then

echo "192.168.0.$1 is up"

else 

echo "192.168.0.S1 is down"

done


for  i in {200..254}; do

PING 172.16.100.$i

done 


 練習二、 編寫腳本/root/bin/copycmd.sh

(1) 提示用戶輸入一個可執行命令名稱

(2) 獲取此命令所依賴到的所有庫文件列表

(3) 複製命令至某目標目錄(例如/mnt/sysroot)下的對應路徑下

 如:/bin/bash ==> /mnt/sysroot/bin/bash

/usr/bin/passwd ==> /mnt/sysroot/usr/bin/passwd

(4) 複製此命令依賴到的所有庫文件至目標目錄下的對應路徑下

: 如:/lib64/ld-linux-x86-64.so.2 ==> 

/mnt/sysroot/lib64/ld-linux-x86-64.so.2

(5)每次複製完成一個命令後,不要退出,而是提示用戶鍵入新

的要複製的命令,並重復完成上述功能;直到用戶輸入quit退出


#1/bin/bash

dst=/mnt/sysimage

if [ ! -e "$dst" ];then

mkdir -pv $dst

fi

my_cp() {

local src=$1

local dst=$2

local dir=`dirname $dst`

if [ ! -e $dir ];then

mkdir -pv $dir

fi

\cp -a $src $dst

}

while true;do

read -p "enter you cmd;" short_cmd

if [ "$short_cmd" == "quit" -o "$short_cmd" == "q" ];then

exit 0

fi

short_cmd=`basename $short_cmd`

long_cmd=`which --skip-alias --skip-functions --skip-dot --skip-tilde $short_cmd` &>/dev/null

#cp bin

my_cp $long_cmd $dst$long_cmd

# cp lib

for lib in `ldd $long_cmd |egrep -o "/[^[:space:]]+"`;do

echo -e "\n$lib\n"

my_cp $lib $dst$lib

done

done


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章