Shell脚本实现检查服务器安全状态(用户、登录IP、防火墙检查)_linux shell

说明:大家平时对Linux服务器安全主要是对系统用户的检查,登陆服务器IP检查,以及防火墙状态检查!

1.需要把正确系统用户名存储在/root/liu_shell/local_user.txt文件中,然后进行比较!
2.对登陆IP判断是不是以192.168.1和192.168.2开头的IP为正常IP!
3.判断iptables状态!

复制代码 代码如下:

 
#!/usr/bin/python
#coding=utf-8
import sys,os,re,socket
host=str(socket.gethostname().strip())
fuhao=os.linesep
def user_panduan():
    file01=file('/etc/passwd')
    mmm=[]
    for xx in file01:
        mmm.append(re.split(':',xx)[0])
    file01.close()
    file02=file('/root/liu_shell/new_user.txt','w')
    for yy in mmm:
        file02.write('%s%s' %(yy,fuhao))
    file02.close()
    f_local=file('/root/liu_shell/local_user.txt')
    f_new=file('/root/liu_shell/new_user.txt')
    local_user=[]
    new_user=[]
    for line1 in f_local:
        line1=line1.strip()
        local_user.append(line1)
    for line2 in f_new:
        line2=line2.strip()
        new_user.append(line2)
    f_local.close()
    f_new.close()
    if local_user==new_user:
        print 'host:%s user ok' %host
    else:
        cmd="echo 'host:%s user error' |mail -s  user_error 331095659@qq.com " %host
        os.system(cmd)
def ip_panduan():
    os.system("last|awk '{print $3}'|grep -v [a-z]|grep -v ^$|sort |uniq >/root/liu_shell/local_ip.txt")
    f_ip=file('/root/liu_shell/local_ip.txt')
    local_ip=[]
    for line in f_ip:
        line=line.strip()
        local_ip.append(line)
    for aa in local_ip:
        kk=re.match('192.168.1|192.168.2',aa)
        if kk:
            print 'host:%s ip ok' %host
        else:
            cmd="echo 'host:%s ip error' |mail -s  ip_error 331095659@qq.com " %host
            os.system(cmd)
def iptables_panduan():
    iptables_status=int(os.popen("/sbin/iptables -nL|grep -v ^$|wc -l").readline().strip())
    if iptables_status==6:
        cmd="echo 'host:%s iptables not running!' |mail -s  iptables 331095659@qq.com " %host
        os.system(cmd)
    else:
        print 'host:%s iptable running ok' %host
user_panduan()
ip_panduan()
iptables_panduan()

时间: 2024-10-27 03:59:54

Shell脚本实现检查服务器安全状态(用户、登录IP、防火墙检查)_linux shell的相关文章

shell脚本学习指南[五](Arnold Robbins & Nelson H.F. Beebe著)_linux shell

作者告诉我们:到目前为止基础已经搞定,可以将前边所学结合shell变成进军中等难度的任务了.激动的要哭了,终于看到本书结束的曙光了 T T .码字比码代码还辛苦.不过令人兴奋的是立刻就学以致用了,花了一天半的时间处理了一个3.8G的服务器日志文件,你妹啊,破电脑内存才2G.不过切割化小然后写了几个awk文件和sh文件按规则处理合并,算是搞定了! 第十一章扩展实例:合并用户数据库 问题描述就是有两台UNIX的计算机系统,这两个系统现在要合并,用户群同样需要合并.有许多用户两台系统上都有帐号.现在合

shell脚本学习指南[三](Arnold Robbins & Nelson H.F. Beebe著)_linux shell

今天木有冷笑话,只有一个噩耗.噩耗是:今天木有冷笑话!!!不要总想着冷笑话嘛,有点追求,听毛主席的话:好好学习,天天向上! 第七章输入输出.文件与命令执行 学C的应该了解标准输入输出和错误输出吧?感觉总打很多字进度太慢,所以一直在省略类似C的东西,也方便以后看这篇文章的人能够快速学完shell脚本(或者是快速看完这本书). 读取行read命令是重要方式之一,它可以自标准输入读取行后,通过shell字段切割的功能(使用$IFS)进行切分,第一部分给第一个变量,第二部分给第二个,类推.如果切割单词多

shell脚本学习指南[二](Arnold Robbins & Nelson H.F. Beebe著)_linux shell

该进入第四章了,刚才看到一个帖子标题:我空有一身泡妞的好本领,但可惜自己是个妞.汗-这个...音乐无国界嘛,这个不应该也没性别界么? 第四章文本处理工具 书中先说明了以下排序的规则,数值的就不用说了,该大就大该小就小,但是字符型很多时候是区分声调或者重音的.在命令行中输入locale查看自己系统的编码配置.默认的是系统配置里的,但是可以自己设置排序的编码.如: 复制代码 代码如下: $ LC_ALL=C sort french-english #以传统ASCII码顺序排序 下边介绍以下排序命令s

shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著)_linux shell

学shell到现在了,一直以为自己不会犯一个大家常说的非常二的问题,结果这本书最后的时候犯了个十分2的事,晚节不保啊!!!我在测试文件路径下除了通配符*和?外还能用啥正则那样的东西,结果就在$HOME下执行了rm .* ...好吧,蛋疼了一下午!还木找回任何一个配置文件.警示后人,千万别使用rm试通配符!任何时候小心使用rm! 第十四章shell可移植性议题和扩展 可以先通读这篇文章.想写出好的可移植性shell,不仅要了解各种shell版本间的差异,还要有很多编程技巧,比如尽量从环境变量中获取

用shell脚本监控进程是否存在 不存在则启动的实例_linux shell

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi ##### processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存

Linux shell脚本基础学习详细介绍(完整版)第1/2页_linux shell

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Linux 脚本编写基础 ◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序.当编辑好脚本时,如果要执行该脚本,还必须使其可执行.要使脚本可执行:编译

shell脚本学习指南[一](Arnold Robbins & Nelson H.F. Beebe著)_linux shell

第一章略过,下边从第二章开始,大家懂得.ps:这里发生了一件非常当我蛋疼的事情,非常!已经码文章码到第四章了,悲剧的按错浏览器按钮刷新掉,怎么也找不回来之前写的东西了.想死!算了,复习一边吧.以下全文均属自己总结书写,有错误的地方也未必是书中错误(当然也有可能是书中错误,但是我都会亲自操作滴),可能是我写错,请大牛指正. 第二章入门 因为第二遍写,就简单快速的写吧,尽量写清楚.大家都知道的终端命令cd啊 chmod啊 who啊之类的组合在一起加上一些控制语句,变量什么的就成shell编程了,给出

用shell脚本防ssh和vsftpd暴力破解的详解讲解_linux shell

脚本需求如下:此SHELL脚本放在crontab计划任务里,每隔6小时(此时间根据实际情况来定义)就去读取/var/log/secure脚本,取出里面恶意猜测IP,如果单位时间内(一星期)的连接数是高于一个阀值,例如100(此阀值也可以根据实际情况来定义),则将其加进/etc/hosts.deny黑名单里,如果低于此阀值,则无视此IP. /var/log/secure里认证失败信息如下: 复制代码 代码如下: Nov 28 10:18:08 centos2 sshd[7556]: Connect

shell脚本中常见的一些特殊符号和作用详解_linux shell

在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1.{} 大括号: 用法一:通配符扩展eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到 userA-home, userA-bin, userA-data, userB-home, userB

Linux Shell脚本系列教程(六):数组和关联数组_linux shell

一.数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合.普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引.通常情况下,使用字符串做索引更容易被人们理解.Bash从4.0之后开始引入关联数组. 二.定义打印普通数组 数组的方法有如下几种: 复制代码 代码如下: #在一行上列出所有元素 array_var=(1 2 3 4 5 6) #以"索引-值"的形式一一列出 array_var[0]=&q