shell脚本入门(2)

1、计算100以内奇数的和,偶数的和

#!/bin/bash
sum=0
for i in `seq 1 2 100`      奇数的和
do
         sum=$[ $sum+$i ]
done
echo $sum

#!/bin/bash
sum=0
for i in `seq 2 2 100`      偶数的和
do
         sum=$[ $sum+$i ]
done
echo $sum

2、一个文件如下,使用脚本创建用户并为用户设置密码,要求脚本自动从下面的文件中读取用户名和密码

[root@gaojingbo shell]# cat user.txt
alice             redhat
jack              abc
tom               centos

脚本
#!/bin/bash
IFS=$'\n'
for line in `cat ./user.txt`
do
    username=`echo $line |awk '{print $1}'`   
    passwd=`echo $line |awk '{print $2}'`
    if id $username &>/dev/null
    then
        echo "$username exists"
        continue
    fi
    useradd $username && echo $passwd |passwd $username --stdin &>/dev/null
    if [ $? -eq 0 ];then
        echo "$username用户创建成功,并且密码修改成功"
    else
        echo "用户创建有问题"
    fi
done
IFS=$' \t\n'

1、判断/tmp/目录下是否存在aa.txt文件,如果存在查看文件的详细信息,如果不存在,创建文件

#!/bin/bash
if [ -f /tmp/aa.txt ]
        then cat /tmp/aa.txt
        echo " 文件存在,查看文件信息"
        exit
        else
                touch /tmp/aa.txt
                echo " 文件不存在创建文件aa.txt"
fi

2、判断执行脚本时后面加的参数的个数,>2输出超过,<2输出不足,=2输出ok

#!/bin/bash
if [ $# -gt 2 ]
        then echo "输出超过"
elif [ $# -eq 2 ]
        then echo "OK"
else
        echo "输出不足"
fi

3、使用read读入某一个值,判断是否为空,如果为空,输出“空”,如果不为空,输出“ok”

#!/bin/bash
read -p "请输入一个数值:" num
if  [ -z $num ]
        then echo "为空"
else  echo "OK"
fi

4、使用find查找/etc/目录中是否存在man.config文件,如果存在判断该文件和/root/install.log文件是否为
硬链接文件,如果不存在直接输出“文件不存在”

#1/bin/bash
while read name
do
        if  [ ! -e $name ]
        then echo "文件不存在"
        fi
        file1=`ls -i /root/index.html |awk '{print $1}'`
        file2=`ls -i $name |awk '{print $1}'`
        if [ "$file2" -eq "$file1" ]
        then
                echo "$name文件和/root/index.html为硬链接"
        else    echo "$name文件存在和/root/index.html不为硬链接"
        fi
done <<< "$(find /etc -name man.config )"

5、find查找系统中是否有镜像,如果没有提示用户下载,如果有就直接挂载到/mnt目录

#1/bin/bash
while read name
do
        if  [  -e $name ]
        touch /mnt
        then mount  $name /mnt
        echo "镜像存在,挂载到/mnt"
        else echo "镜像不存在,请下载镜像"
        fi
done <<< "$(find / -iname "*.iso" )"

6、在passwd.txt文件中存入两行信息,一行是用户名:robin,第二行是密码:123。要求用户输入用户名
和密码,如果与文件中存放的用户名和密码恰好吻合,则输出信息“登录成功”,否则输出信息“登录失败”

#!/bin/bash
username=`head -1 ./passwd.txt`
passwd=`tail -1 ./passwd.txt`
read -p "请输入用户名:" name
read -p "请输入密码:" pass
         [ $name == $username ]&& [ $pass == $passwd ]
        if [ $? -eq 0 ]
        then
                echo "登录成功"
        else
                echo "登录失败"
        fi

7、判断vsftpd进程是否则运行,如果在运行则输出信息“running”,否则输出信息“stop”

#!/bin/bash
systemctl status vsftpd &> /dev/null
if [ $? -eq 0 ]
        then echo "runing"
        else echo "stop"
fi

8、判断mem的使用情况是否超过50%,如果超过则输出“使用率超过50%”,否则输出“ok,正常”

#!/bin/bash
mem_total=`free -m|head -2 |tail -1|awk '{print $2}'`
mem_used=`free -m|head -2 |tail -1|awk '{print $3}'`

mem_size=`echo "scale=2;$mem_used/$mem_total "|bc|awk -F"." '{print $2}'`
if [ $mem_size -gt 50 ]
        then echo "使用率超过50%"
        else echo "OK,正常"
fi

9、统计系统当中的登录shell的用户的个数是否超过5个,如果超过则输出“5个以上”,否则输出“ok”

#!/bin/bash
num=`grep -c sh$ /etc/passwd`
if [ $num -gt 5 ]
then
    echo "5个以上"
else
    echo "ok"
fi

10、判断系统当中是否有镜像,如果没有镜像则将光盘挂载到/yum目录上,同时书写yum的配置文件,制
作一个本地yum源;如果有镜像,则将镜像挂载到/yum目录上,同时书写yum的配置文件,制作一个本地
yum源。

#!/bin/bash
mkdir -p /yum
iso=`find /tmp -name etc.iso`
if [ -z $iso ]
then
    echo "没有镜像"
    mount /dev/cdrom /yum
    if [ $? -eq 0 ]
    then
        [ -d /etc/yum.repos.d/backup ]  || mkdir -p /etc/yum.repos.d/backup
        mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
        echo -e "[cdrom]\nname=server\nbaseurl=file:///yum\ngpgcheck=0" > /etc/yum.repos.d/yum.repo
        yum clean all
        yum makecache
    fi
else
    mount -o loop $iso /yum
    if [ $? -eq 0 ]
    then
        [ -d /etc/yum.repos.d/backup ]  || mkdir -p /etc/yum.repos.d/backup
        mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
                echo -e "[cdrom]\nname=server\nbaseurl=file:///yum\ngpgcheck=0" > /etc/yum.repos.d/yum.repo
                yum clean all
                yum makecache
        fi
fi

11、判断系统中是否存在nmap命令,如果不存在则安装,如果存在输出“ok”

#!/bin/bash
cmd=`which nmap`
if [ -z $cmd ]
then
    echo "不存在"
    yum install -y nmap
else
    echo "ok"
fi

12、判断一个目录是否为空目录,如果为空则输出“空”,否则输出“非空”

#!/bin/bash
read -p "输入目录: " dir
num=`ls -a $dir | wc -l`
if [ $num -eq 2 ]
then
    echo "空"
else
    echo "非空"
fi

13、输入一个目录名,将/etc/hosts文件备份到目录中,要考虑到目录是否存在的问题

#!/bin/bash
read -p "请输入备份的目录: " back_dir
if [ ! -d $back_dir ]
then
     mkdir -p $back_dir
     else echo " 目录存在"
     exit
fi
cp -rf /etc/hosts $back_dir && echo "文件备份成功!!!"

猜你喜欢

转载自blog.csdn.net/qq_42989565/article/details/82153655