您的位置:首页 > 运维架构 > Shell

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

2017-10-30 19:06 211 查看
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
4000
"你输入了${#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 !!"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 脚本