天天看點

幾個腳本的簡單練習(二)

1 編寫一個腳本使我們在寫一個腳本時自動生成"#!/bin/bash”這一行和注釋資訊。

#!/bin/bash

if ! grep "^#!" $1 &>/dev/null; then

cat >> $1 << EOF

# Author:

#Date & Time: `date +"%F %T"`

#Description:

EOF

fi

vim +5 $1

任意三個整數,判斷最大數。

echo "please enter three number:"

read -p "the first number is :" n1

read -p "the second number is:" n2

read -p "the third number is:" n3

let MAX=$n1

if [ $n2 -ge $n1 ]; then

MAX=$n2

if [ $n3 -ge $MAX ]; then

MAX=$n3

echo "the max number is $MAX."

求100以内偶數的和。

方法一:

sum=0

for I in {1..50}; do

sum=$(($sum+2*$I))

done

echo "the sum is $sum"

方法二:

let SUM=0

for I in $(seq 1 100); do

if [ $[$I%2] == 0 ]; then

let SUM+=$I

echo "the sum is $SUM."

利用for語句如何ping C類網,如何ping B類網。

ping C 類網

read –p “C network:” MYNET

PINGNET=`echo $MYNET | sed ‘s/\([0-9.]*\)\ .[0-9]*/\1/g’`

let I=1

while [ $I –le 254 ]; do

ping –c1 –W1 $PINGNET.$I &>/dev/null

[ $? –eq 0 ] && echo “$PINGNET.$I online.” || echo “$PINGNET.$I offline.”

let I++

ping B 類網

read –p “B network:” MYNET

PINGNET=`echo $MYNET | sed ‘s/\([0-9]\{1,3\}\.[0-9]\{1,3\}\)\..*/\1/g’`

for P in {0..255}; do

for I in {1..255}; do

if ping -c1 -W2 $PINGNET.$P.$I &>/dev/null; then

echo "$PINGNET.$P.$I is online."

else

echo "$PINGNET.$P.$I is offline."

提示輸入一個使用者名,判斷使用者是否存在,如果存在,顯示一下使用者預設的shell。

#!bin/bash

read –p “please input a username:” USER

if cut –d:-f1 /etc/passwd | grep “^$USER$” &> /dev/null ;then

MYBASH=`grep “^$USER: ” /etc/passwd | cut –d : -f7`

echo “ ${USER}’s shell is $MYBASH”

echo “$USER not exists.”

exit 4

練習:監控系統登入人數,超過四個,顯示已經達到四個,五秒鐘檢查一下,并退出腳本(exit)

#! /bin/bash

read –p “A user:” MYUSER

cut –d : -f1 /etc/passwd | grep “^$MYUSER” &> /dev/null || exit 6

let COUNT=`who | grep “^$MYUSER” | wc –l`

until [ $COUNT –ge 4 ]; do

sleep 5

let COUNT=`who | grep “^$MYUSER” | wc -l`

echo “$MYUSER loged 4 times.”

用sed語句實作:檢視/etc/sysconfig/network-scripts/ifcfg-eth0 目錄下,如果

BOOTPROTO=dhcp,把bootp改成static,并手動添加IP位址和子網路遮罩:

IPADDR= NETMASK= 。

IFFILE=’/root/ifcfg-eth0’

read –p “IPaddr[192.168.0.1]:” MYIP

[ -z $MYIP ] && MYIP=’192.168.0.1’

echo “please choose your netmask [1,2,3]:”

cat << EOF

‘1’)

MYMASK =’255.255.255.0’

‘2’)

MYMASK =’255.255.0.0’

‘3’)

MYMASK =’255.0.0.0’

read CHOICE

case $CHOICE in

MYMASK=’255.255.255.0’ ;;

MYMASK=’255.255.0.0’ ;;

MYMASK=’255.0.0.0’ ;;

*)

[ -z $CHOICE ] && read –p “please input your mask:” MYMASK || MYMASK=”255.255.255.0” ;;

esac

[ -z $MYMASK ] && MYMASK=255.255.255.0

if grep –E “^BOOTPROTO=(dhcp)|(bootp)$” $IFFILE&>/dev/null; then

sed –i “ s/^BOOTPROTO=.*/BOOTPROTO=static/g” $IFFILE

grep “^IPADDR=.*” $IFFILE &>/dev/null && sed –i “s/IPADDR=.*/IPADDR=$MYIP/g” $IFFILE || sed –i ” /BOOTPRO=.*/a \IPADDR=$MYIP” $IFFILE

grep “^NETMASK=.*” $IFFILE &>/dev/null && sed –i “s/NETMASK=.*/NETMASK=$MYMASK/g” $IFFILE || sed –i ” /BOOTPRO=.*/a \NETMASK=$NETMASK” $IFFILE

本文轉自 490999122 51CTO部落格,原文連結:http://blog.51cto.com/lyp0909/463602,如需轉載請自行聯系原作者