两个小shell脚本

防止其他人暴力破解密码,如果有人尝试输入密码错误次数到达5次则拒绝此IP访问ssh服务。

#!/bin/bash
lastb | awk ‘{print $3}‘ | uniq -c | sort -r > a.txt
sed -ri ‘[email protected]^[[:space:]][email protected]@g‘ a.txt
sed -ri ‘[email protected][[:space:]][email protected][email protected]‘ a.txt
b=$(cat a.txt)
for i in $b
do
  ip=`echo $i | awk -F= ‘{print $2}‘`
  cishu=`echo $i | awk -F= ‘{print $1}‘`
  if [ $cishu -ge 5 ];then
     grep "$ip" /etc/hosts.deny &> /dev/null
      if [ $? != 0 ];then
        echo "sshd:$ip" >> /etc/hosts.deny
        echo sed -i ‘/192.168.0.101$/d‘ /etc/hosts.deny | at 12am +7 day >> /dev/null
      fi
  fi
done

还有一个redhat5系列系统优化脚本

#!/bin/bash
services=`chkconfig  --list | grep -E "3:(on|启用)"| awk  ‘{print $1}‘ | grep -vE "crond|network|sshd|syslog"`
touch /tmp/services.txt
for i in $services
do
  chkconfig $i off
  echo "禁止了系统服务$i"
  echo $i >> /tmp/services.txt
done
hang=`wc -l /tmp/services.txt | awk ‘{print $1}‘`
if [ $hang -lt 1 ];then
  echo "当前的系统服务已经最优了"
fi
rm -f /tmp/services.txt
#删除系统冗余账号
username=`grep -E "news|uucp|games|gopher" /etc/passwd | awk -F: ‘{print $1}‘`
for i in $username
do
  userdel -r $i &> /dev/null
  echo “删除了冗余帐号$i”
done
#保证用户的登录shell没有被改动
denglu=`grep "/bin/bash" /etc/passwd | awk -F: ‘{print $1}‘`
renshu=`grep "/bin/bash" /etc/passwd | wc -l`
echo "一共有$renshu个用户可以登录系统"
for i in $denglu
do
  echo "$i可以登录系统"
done
#设置密码有效期
read -p "设置密码有效期(天):" youxiaoqi
grep -v PASS_MAX_DAYS /etc/login.defs > /tmp/tmp
echo "PASS_MAX_DAYS     $youxiaoqi" >> /tmp/tmp
cp /tmp/tmp /etc/login.defs
echo "设置密码有效期为$youxiaoqi天"
#优化历史命令条目
read -p "记录历史命令条目(条):" lishi
grep "HISTSIZE=" /etc/profile >> /dev/null
if [ $? != 0 ];then
echo "HISTSIZE=$lishi" >> /dev/null
else
sed -ri s#HISTSIZE=.*#HISTSIZE=$lishi#g /etc/profile >> /dev/null
 fi
grep "clear" /root/.bash_logout >> /dev/null
    if [ $? != 0 ];then
         echo clear >> /root/.bash_logout
     fi
   echo "成功设置了root用户退出bash时清空历史命令"
#优化闲置超时时间的
read -p  "闲置超时时间(分钟):" sj
grep "export TMOUT" /etc/profile &> /dev/null
if [ $? != 0 ];then
  echo "export TMOUT=$sj" >> /etc/profile
else
  sed -ri s#"export TMOUT=.*"#"export TMOUT=$sj"#g /etc/profile &> /dev/null
fi
#禁止Ctrl+Alt+Del热键重启
grep "#ca::" /etc/inittab >> /dev/null
if [ $? != 0 ];then
   sed -ri [email protected]::@#ca::@g /etc/inittab >> /dev/null
     if [ $? = 0 ];then
       echo "禁止了Ctrl+Alt+Del热键重启"
     else
       echo "禁止Ctrl+Alt+Del热键重启失败,请手动设置"
     fi
   else
   echo "以前禁止了Ctrl+Alt+Del热键重启,这里不再进行设置"
fi
#设置grub加密密码
grep password /boot/grub/grub.conf &> /dev/null
if [ $? = 0 ];then
   sed -ri ‘/^password/d‘ /boot/grub/grub.conf &> /dev/null
fi
   read -p "设置grub加密密码:" md5m
   md5miyao=`echo -e "$md5m\n$md5m" | /sbin/grub-md5-crypt 2> /dev/null | tail -1`
   sed  -ri ‘/^title/i\password --md5  ‘$md5miyao‘‘ /boot/grub/grub.conf &> /dev/null
#修改登录提示信息
read -p "请输入登录提示信息" tishi
echo $tishi > /etc/issue
#减少开放的tty终端个数
for i in {2..6}
do
 grep "\#$i:2345" /etc/inittab >> /dev/null
 if [ $? != 0 ];then
    sed -ri [email protected]$i:[email protected]#$i:[email protected] /etc/inittab >> /dev/null
    echo "关闭了tty$i终端"
 fi
done
#加大文件描述符
read -p "设置文件描述符(推荐设置范围3万到6万之间):" miaoshufu
ulimit -HSn $miaoshufu
echo "*          -            nofile         $miaoshufu" >> /etc/security/limits.conf
时间: 2025-01-07 02:14:41

两个小shell脚本的相关文章

让shell脚本中的echo输出带颜色

让echo输出带颜色的方法有两种 在shell脚本中定义颜色变量,使用echo -e调用变量 定义变量的时候,把echo -e定义到变量中,然后输出变量 可以让echo输出显示颜色的shell脚本 #!/bin/bash #定义颜色的变量 RED_COLOR='\E[1;31m'  #红 GREEN_COLOR='\E[1;32m' #绿 YELOW_COLOR='\E[1;33m' #黄 BLUE_COLOR='\E[1;34m'  #蓝 PINK='\E[1;35m'      #粉红 RE

对于shell脚本参数获取时的一点小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取得

对于shell脚本获取参数的一些小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i  取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取

清理hdfs小文件shell脚本

清理hdfs小文件shell脚本 #!/bin/bash echo "--------------------------------------------------------------------------------------------------------------------" echo "BASH_VERSION: $BASH_VERSION" echo "参数说明: " echo "从外部只传递零个参数时,

shell脚本基础的小实验1

shell脚本入门小实验 编写一个小脚本程序sumsquare.sh,用来计算两个整数的平方和. 例如:当执行sumsquare.sh时 输入3和4,输出的结果为:25; 当执行sumsquare.sh时输入5和6,输出结果为:61 让我们想想两数的平方和 在shell上怎么先做平方再就和,平方就一个数的2次方也就是这个数乘以本身 我们就用输入3和4做例:字面意思就是当你输入3和4 得到的结果是25 那么就是说我们要先做3和4这两个数的平方:3的平方3X3=9;4的平方4X4=16:就和9+16

shell脚本小实例

本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixschool. commandlinefu.酷勤网和igigo.net,当然了,也有部分是我自己的经验心得,管他呢,进了我的脑子就是我的了. 0. shell 调试 复制代码代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x1. 用 && ||

shell脚本小练习--域名解析

这是一个群里别人让我写的一个小脚本,当做练习发到这里,功能很简单,从一个文件里面提取域名,之后利用nslookup命令对域名进行解析,再按照固定的格式输出到一个新的文件里面(输出规格是为address=/域名/IP),脚本内容如下:  #!/bin/bash for name in `cat /root/dns.File` ;do         nslookup $name| grep Add |awk -v awk_var="$name" '!/#/{printf "ad

shell脚本高级进阶小总结

经过一周脚本的折磨,觉得还是有一定的收获,所以就把一些不容易理解的并且容易忘记的难点做一个总结.shell脚本中主要有两大模块,第一就是流程控制的脚本,第二就是函数控制的脚本. ▲首先,流程控制包括顺序执行,选择执行,循环执行.主要的条件语句就是if.那就来先说说if语句吧! 1.if语句分为单分支,双分支和多分支,并且可以嵌套. 2.多分支分为如下几种情况 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then

Linux Shell 脚本的小技巧——不定期更新

本文旨在积累平时写 shell 脚本是遇到的小问题的解决方法.在这里不定期的更新,以便以后查阅.沿用. 一,在shell 脚本中定义默认值 1.   对默认变量直接赋值 read -p "input>>:" nub nub=${nub:-30} echo ${nub} 2.   对默认变量用可变值赋值 read -p "input>>:" nub nub=${nub:-$(date +%Y%m%d)} echo ${nub}