shell脚本案例

                        脚本案例十三git

实例1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操做系统版本,内核版本, CPU型号,内存大小,硬盘大小。

mkdir   -pv   /root/bin
vim    /root/bin/systeminfo.sh  代码以下
#!/bin/bash
echo   '主机名是:'
hostname
echo   'IPv4地址是:'
ifconfig | grep -w inet|tr  -s  ' '|cut  -d  ' '  -f 3
echo   '操做系统版本:'
cat /etc/redhat-release
echo   '内核版本:'
uname   -r
echo   'cpu型号:'
lscpu |grep R
echo   '内存大小:'
free -h|grep Mem|tr -s ' '|cut -d ' ' -f 1-2
echo   '硬盘大小:'
fdisk -l |grep sd    #或  lsblk

-----------------------------------------------------------------------------------------

实例2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录 备份到/root/etcYYYY-mm-dd中

vim   /root/bin/backup.sh
方法一:
#!/bin/bash
echo  "正在备份...."
cp  -a   /etc    /root/etc`date +%F`
echo "备份完成"

方法二:计划任务
#!/bin/bash
crontab  -e
1  0  *  *  *  cp  -a   /etc    /root/etc`date +%F`

-----------------------------------------------------------------------------------------

实例3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利 用率最大的值
vim    /root/bin/disk.sh
#!/bin/bash
echo  "当前硬盘分区中空间利用率最大的值是:`df  -h|grep "^/dev/sd"|tr -s " " |cut -d " "  -f 5|sort -n|tail -1|cut -c -2`"

-----------------------------------------------------------------------------------------

实例4、编写脚本/root/bin/links.sh,显示正链接本主机的每一个远 程主机的IPv4地址和链接数,并按链接数从大到小排序
vim  /root/bin/links.sh
#!/bin/bash
echo  "链接数和IPv4地址为:` netstat  -nt|tr  -s  " "| cut -d " "  -f 5|sed  -n '/^[[:digit:]]'/p |tr  ":"  "."|cut  -d .  -f 1-4|sort|uniq -c |sort -nr`"

-----------------------------------------------------------------------------------------

实例5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd 文件中的第10个用户和第20用户的ID之和
vim  /root/bin/sumid.sh
#!/bin/bash
ID1=`sed  -n '10p'   /etc/passwd|cut -d:  -f 3`
ID2=`sed  -n '20p'   /etc/passwd|cut -d:  -f 3`
SUM=$[$ID1+$ID2]
echo  "用户ID和为:$SUM"
-----------------------------------------------------------------------------------------

实例6、写一个脚本/root/bin/sumspace.sh,传递两个文件 路径做为参数给脚本,计算这两个文件中全部空白行之和
vim  /root/bin/sumspace.sh
#!/bin/bash
A=`grep  "^$"    $1  | wc  -l`
B=`grep  "^$"     $2 | wc  -l`
C=$[$A+$B]
echo  "全部空白行的和为:$C"

-----------------------------------------------------------------------------------------
vim


实例7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
vim  /root/bin/sumfile.sh
#!/bin/bash
A=`ls   -A   /etc   | wc -l`
B=`ls   -A   /var   | wc -l`
C=`ls    -A  /usr  | wc -l`
SUM=$[$A+$B+$C]
echo  "一级子目录和文件的总和为:$SUM"


-----------------------------------------------------------------------------------------

实例8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径做 为参数;若是参数个数小于1,则提示用户“至少应该给一个 参数”,并当即退出;若是参数个数不小于1,则显示第一个 参数所指向的文件中的空白行数
vim  /root/bin/argsnum.sh
#!/bin/bash
if  [ $#  -lt  1 ];then
   echo  "请输入至少一个参数:"
     exit 0
fi

if  [  $#   -gt  1 ];then
 SUM=`grep  "^$"  $1 | wc -l`
 echo  "空白行为:$SUM"
 fi

-----------------------------------------------------------------------------------------

实例9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址作为参数,测试是否可连通。若是能ping通,则提示用户“该IP地址可访问”;若是不可ping通,则提示用户“该IP地址不可访问
vim  /root/bin/hostping.sh
#!/bin/bash
if  [  $#  -lt  1 ];then
 echo "请输入参数:"
  exit  0
fi

ping  -c 1  -w  1  $1  &>/dev/null
if  [  $?  -eq  0  ];then
   echo  "该IP地址能够访问"
else
    echo  “该IP地址不能够访问”
fi



-----------------------------------------------------------------------------------------

实例10、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判 断当前用户对/tmp/fiile1文件 是否不可读且不可写 ?
vim  /root/bin/per.sh
#!/bin/bash
if  [ ! -r /tmp/file1   -a  ! -w  /tmp/file1 ];then
      echo  "当前用户对此文件无读写权限!"
else
      echo  "当前用户对此文件可读可写!"
fi


-----------------------------------------------------------------------------------------

实例11、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和容许普通用户登陆系统。
vim  /root/bin/nologin.sh
#!/bin/bash
read -p   "请输入用户名:"    username
A=/bin/bash
B=`grep   "^$username"   /etc/passwd | cut -d: -f7`
C=`grep  "^$username"   /etc/passwd| cut -d:  -f 3`
D=`grep   "^$username"  /etc/passwd`

if [ $? -ne 0 ];then
 echo "系统无此用户..."

elif [ $C  -lt 1000 ];then
 echo "$username 不是普通用户,请从新输入..."

elif [ "$B"  ==  "$A" ];then
  usermod  -s /sbin/nologin  $username
  echo "禁止$username 登陆"
fi



vim  /root/bin/login.sh
#!/bin/bash
read -p   "请输入用户名:"    username
A=/sbin/nologin
B=`grep   "^$username"   /etc/passwd | cut -d: -f 7`
C=`grep  "^$username"   /etc/passwd | cut -d: -f 3`
D=`grep   "^$username"  /etc/passwd`

if [ $?  -ne 0 ];then
 echo "系统无此用户..."

elif [ $C  -lt  1000 ];then
 echo "$username 用户不是普通用户,请从新输入..."

elif [ "$B" == "$A" ];then
  usermod  -s /bin/bash  $username
 echo  "容许$username 登陆"
fi
bash


实例十二. 写一个批量建立10个用户的脚本users.sh。建立的用户名由字母和数字组成。设置用户的初始密码跟用户名相同,每建立一个用户就显示用户的ID信息,再显示用户名、密码信息。
vim    users.sh
#!/bin/bash
if [ $# -lt 1 ];then
 echo "请输入参数add:"
   exit 0
fi
     if [ $1 == "add" ];then
     for I in {1..10}; do
     if id user$I &>/dev/null;then
echo "用户 user$I 已存在"
else
   useradd user$I
   echo user$I | passwd --stdin user$I &> /dev/null
   echo "user$I add sucessful"
   id  user$I
   grep   user$I   /etc/passwd | cut  -d :  -f1
   grep   user$I   /etc/shadow | cut  -d :  -f2  
fi
done
fi

-----------------------------------------------------------------------------------------

实例十三.写一个批量删除上一题的10个用户的脚本udel.sh。删除以前显示用户的ID信息,要删除用户的家目录。
vim   udel.sh
#!/bin/bash
 if [ $# -lt 1 ];then
 echo "请输入参数del:"
   exit 0
fi
  if [ $1 == "del" ];then
  for I in {1..10};do
if id user$I &> /dev/null;then
       id   user$I
       userdel -r user$I
echo "delete user$I sucessful"
else
echo "no user$I"
fi
done
fi

---------------------------------------------------------------------------------------ide

相关文章
相关标签/搜索