运维之shell篇-----4.1-20例shell点子脚本

来源:互联网 发布:怎么安装ubuntu系统 编辑:程序博客网 时间:2024/06/05 11:22
1.vim usps.sh
#!/bin/bash
A=`awk -F: '/bash$/{print $1}' /etc/passwd`


for i in $A
do
b=`grep $i /etc/shadow | awk -F: '{print $2}'`
echo "$i--->$b"
done


2.vim rh7dvd.sh
#!/bin/bash
#
echo "准备配置yum源"


rm -rf /etc/yum.repos.d/*.repo 


echo '[rh7dvd]


name=Red Hat Enterprise Linux 7.1


baseurl=file:///ISO/rhel-server-7.2-x86_64-dvd.iso


Enabled=1


gpgcheck=0' > /etc/yum.repos.d/rh7dvd.repo 


echo ‘yum源配置成功’


echo ‘软件数量如下:’


yum repolist | tail -1


#or


#gpgcheck=1


#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


3.vim rsync.sh
#!/bin/bash


FROM_DIR="/root/桌面/zx1/"


RSYNC_CMD="rsync -a --delete $FROM_DIR /zx2"


while inotifywait -rqq  -e modify,move,create,delete,attrib $FROM_DIR 


do
$RSYNC_CMD
done &


4.vim 2008还原.sh
#!/bin/bash
#############
IMG_DIR=/var/lib/libvirt/images/
id=`virsh dominfo win2008 2> /dev/null | grep running`
if  [ -n "$id"  ];then
        /usr/bin/virsh destroy win2008 &> /dev/null
fi
virsh undefine win2008 2> /dev/null


if [ -e /var/lib/libvirt/images/win.img ]; then
    rm -rf $IMG_DIR/win.img
fi
echo "正在还原....."


sleep 2
qemu-img create -f qcow2 -b $IMG_DIR/.win2008.img  $IMG_DIR/win.img &> /dev/null
virsh define /root/.win2008.xml &> /dev/null
echo  "还原成功....."
sleep 2
exit


5.vim log.sh
#!/bin/bash


5 3 * * 5 tar -czf log-`date +%Y%m%d`.tar.gz /var/log


6.vim whocount.sh
#!/bin/bash


#FIRST
num=$(who | wc -l)   #don't have blank around '=' 


if [ $num -gt 3 ];then
mail -s warning root < /etc/passwd
fi
#TWO
#num = $(who | wc -l)


#if [ $num -gt 3 ];then
#        mail -s warning 13475639563@163.com < /warning.txt
#fi




7.vim usr.sh
#!/bin/bash


#1.can't be empty.
#The passwd hidden.
#create multi-user.
#讲求实际实际生活对话.
:'
read -p "请输入用户名:" name


[ -z $name ] && echo "必须输入用户名!!" && exit


stty -echo


read -p "请输入密码:" pass


stty echo


[ -z $pass ] && echo "必须输入密码!!" && exit


useradd $name


echo "$pass" | passwd --stdin $name


'&>/dev/null


#2.添加若干个用户
#每个用户密码同用户名相同,而且要求,添加密码完成后不显示passwd命令的执行结果信息.
#每个用户添加后,都要展示用户某某已经添加成功.
#
'for i in $(cat people.txt)


do


        id $i&>/dev/null


     if [ $? != 0 ];then


        useradd $i && echo "$i" | passwd --stdin $i &>/dev/null


        echo "Add $i successfully."


     else
        echo "该用户已经存在!!" && exit


     fi
done
'&>/dev/null
#3.利用for创建指定的多用户并添加统一密码,不显示passwd执行信息.


'for i in $(cat 关联文件/people.txt)


do
useradd $i
echo "123456" | passwd --stdin $i &>/dev/null
done'&>/dev/null




#4.利用while创建多用户,并统一密码.


'i=1
while [ $i -le 5 ]


do 
useradd user$i
echo "123" | passwd --stdin user$i >/dev/null
let i++
done'&>/dev/null


#5.用户为空跳出,不手动设置密码默认为123456


#!/bin/bash


#


read -p "请输入用户名:" name

[ -z $name ] && exit


read -p "请输入密码:" pass

pass=${pass:-123456}


useradd $name


echo "$pass" | passwd --stdin $name


8.vim cai.sh
#!/bin/bash


#知识点:
#随机数利用RANDOM.
#while循环.
#read
#if
#增添场景对话
num=$[RANDOM%10]
i=0
while :

do

let i++
read -p "我的jj有多长,你摸一下:" cai

if [ $cai -eq $num ];then

        echo "你好棒呀!!!,猜了$i次。"
       
        exit
elif [ $cai -lt $num ];then
        echo "太短啦!!妹妹!"
elif [ $cai -gt $num ];then
        echo "太长啦!!妹妹!"
else
        echo "你在说什么,我听不懂艾!"
fi

done

'read -p "我的jj有多长,你再给你一次机会:" cai

if [ $cai -eq $num ];then
        echo "你好棒呀!!!"
        exit
elif [ $cai -lt $num ];then
        echo "我有这么小么!!妹妹!"
elif [ $cai -gt $num ];then
        echo "奥,你太看得起我咯,没有那么大啦!!妹妹!"
else
        echo "你在说什么,我听不懂艾!"
fi

read -p "我的jj有多长,再猜不对不让你吃啦:" cai

if [ $cai -eq $num ];then
        echo "你好棒呀!!!"
        exit
elif [ $cai -lt $num ];then
        echo "我有这么小么!!妹妹!"
elif [ $cai -gt $num ];then
        echo "奥,你太看得起我咯!!妹妹!"
else
        echo "你在说什么,我听不懂艾!"
fi'

9. vim echc.sh
#!/bin/bash
cecho(){

echo -e "\033[$1m$2\033[0m"

}

10.vim for.sh
#!/bin/bash

# VARSION IS 
#对for重要的组织形式:变量引用, 次数,值列表内容形式

for i in  1 2 3 4 

do 
   echo $i
   echo nb
done

for i in `ls /home`

do 
  echo $i

done

11.vim while.sh
#!/bin/bash

#基础

i=1

while [ $i -le 5 ]

do 
echo $i
let i++
done

12.vim sleepwhile.sh
#!/bin/bash

#
while :
do
echo 'a'
echo 'b'
sleep 0.1
done

13.vim case.sh
#!/bin/bash

#
case $1 in

redhat )
echo "fedora";;

fedora )

echo "redhat";;

    * )

echo "用法:$0 {redhat|fedora}"

exit 1

esac


14.vim ip.sh
#!/bin/bash
#

i=0

while :

do
read -p "请输入IP,输入EOF 结束:" IP
[ $IP == EOF ]&& break
pool[$i]=$IP
let i++
done

echo "你输入的IP 有${pool[*]}"
echo "你输入了${#pool[*]}个IP"
echo "你输入的第十个IP是${pool[9]}"


15.ping.sh
vim 
#!/bin/bash

#ping one IP

'ping -c2 $1 &>/dev/null

ping -c -i 0.2 -w 3 $1 &>/dev/null

if [ $? -eq 0 ];then
  echo "$1网络可直达!!"
else
   echo "$1网络不可达!!"
fi'&>/dev/null

#ping一个网段.
for IP in `seq 254` 

do

  ping -c 3 -i 0.2 -w 0.5  192.168.4.$IP &> /dev/null
  if [ $? -eq 0 ];then
  echo "Host 192.168.4.$IP is up."
  else
echo "Host 192.168.4.$IP is down."
  fi

done


16.vim rm.sh
#!/bin/bash

#
SHLINKS=/root/桌面/zx1/shell/关联文件
for i in `seq 10`

do

  rm -rf $SHLINKS/$i.txt

done

17.vim rmuser.sh
#!/bin/bash


#
'
for i in $(cat 关联文件/people.txt)


do
userdel -r $i
echo  "$i删除成功!!"
done'&>/dev/null

i=1


while [ $i -le 5 ]


do 
userdel -r user$i
let i++
done


18.vim touch.sh
#!/bin/bash
for i in `seq $1`

do 

  touch $2/$i.txt

done


19.vim break.sh
#!/bin/bash
for  i   in   {1..5}
do
        if  [  $i  -eq  3 ];then
             break            #这里将break替换为continue,exit分别测试脚本执行效果
        fi
        echo $i
done
echo "程序结束"


20.vim vsftp.sh
#!/bin/bash

if [ $USER == root ];then

yum -y install vsftpd &> /dev/null #(只有管理员才有权限做)

systemctl start vsftpd

systemctl enable vsftpd
fi
echo "vsftpd is up !!"
原创粉丝点击