ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

企业常用脚本

2022-07-26 15:02:57  阅读:170  来源: 互联网

标签:脚本 常用 null dev echo nginx install fi 企业


作业讲解

作业

根据菜单,安装对应的架构
输入数字和 lnmp  nginx




[root@m01 scripts]# cat install.sh 
#!/bin/bash

cat <<EOF
+---------+
| 1.lnmp  |
+---------+
| 2.lnmt  |
+---------+
| 3.lamp  |
+---------+
| 4.lamt  |
+---------+
| 5.nginx |
+---------+
| 6.apache|
+---------+
| 7.tomcat|
+---------+
| 8.php   |
+---------+
| 9.MySQL |
+---------+
EOF

check_yum(){
	service=$1
	service_count=`rpm -qa|grep -w $service|wc -l`
	if [ $service_count -gt 0 ];then
		echo "$service 已安装"
		return 1
	fi
}

check_source(){
	service=$1
	path=$2
	if [ -e $path ];then
		echo "$service 已安装"
		return 1
	fi
}

install_yum_pkg(){
	service=$1
	check_yum $service
	if [ $? -ne 1 ];then
		echo "正在安装 $service ..."
		yum install -y $service &>/dev/null
		check_yum $service
		if [ $? -ne 1 ];then
			echo "$service 安装失败..."
		fi
	fi
}

install_source_pkg(){
	service1=$1
	path=$2
	install_path=$3
	check_source $service1 $path
	if [ $? -ne 1 ];then
		if [ ! -d $install_path ];then
			mkdir -p $install_path
		fi
		echo "正在安装 $service1 依赖包..."
		install_yum_pkg openssl-devel
		install_yum_pkg pcre-devel

                echo "正在解压 $serivce1 ..."
                tar xf nginx-1.22.0.tar.gz

                echo "正编译安装 $service1 ..."
                cd nginx-1.22.0 && \
		./configure --prefix=$install_path/nginx-1.22.0 --with-http_ssl_module &>/dev/null && \
		make &>/dev/null && \
		make install &>/dev/null

		echo "正在创建 $service1 软连接..."
		ln -s $install_path/nginx-1.22.0 $install_path/nginx

		echo "正在添加环境变量..."
		echo 'PATH="/$installl_path/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh
		install_source_pkg $service1 $path
		if [ $? -ne 1 ];then
			echo "$service1 安装失败..."
		fi
	fi
}

read -p '请输入编号或服务名:' num

if [ $num ==  '6' -o $num == 'apache' ];then
	install_yum_pkg httpd
elif [ $num ==  '9' -o $num == 'mysql' ];then
	install_yum_pkg mariadb
elif [ $num ==  '5' -o $num == 'nginx' ];then
	install_source_pkg nginx /app/nginx /app
fi

案例

案例一:

日志分析案例

写一个shell脚本,防止DDOS攻击,先分析日志,监控某一个IP并发连接数,若短时内PV达到100阈值,则调用防火墙命令,封掉该IP。

可以分析nginx日志或者查看当前网络连接数 ss -ant 或者 netstat -ant

这里使用一个生产的日志 netstat.log

#!/bin/bash
awk -F '[ :]+' '/^tcp/{print $6}' netstat.log|grep -E '^[1-9]'|sort|uniq -c|sort -nr|while read line_ip;do
        exception_ip_count=`echo $line_ip|awk '{print $1}'`
        exception_ip=`echo $line_ip|awk '{print $2}'`

        if [ $exception_ip_count -gt 5 ];then
                firewall-cmd --add-source=$exception_ip --zone=drop &>/dev/null
                echo "$exception_ip 访问异常,添加到防火墙..."
        fi
done

案例二:

在指定目录下,通过随机10个小写字母,然后生成一个文件名为:随机字母_zls.txt的文件

生成随机内容的方法

## 方法一:
[root@zabbix01 ~]# openssl rand -base64 10
UUBtKUvUkEfcEw==

## 方法二:
[root@zabbix01 ~]# echo $((RANDOM))|md5sum

## 方法三:
[root@zabbix01 ~]# date +%N|md5sum
3fd3a5c57def5f89481e1961fceb13e8

## 方法四:
tr -cd 'a-zA-Z0-9'</dev/urandom|head -c 10


#!/bin/bash
num=`openssl rand -base64 10`
touch ${num}_zls.txt           

案例三:

# 提示一:变量子串方法
 
# 提示二:sed awk方法
 
# 提示三:命令拼接
 
# 提示四:rename
rename zls.txt cls.TXT /root/*.txt


#!/bin/bash

for name in `ls -1 /abc`;do
        #mv /abc/${name%.*}.yml /abc/${name%.*}.j2
        mv /abc/$name /abc/${name//j2/yml}
done

案例四:

创建100个系统用户,生成随机密码

并将用户名和密码保存到文件中

用户名:密码

#!/bin/bash

read -p "请输入需要创建的用户名: " user_name
user_list=`echo ${user_name}{1..100}`

for name in $user_list;do
        id $name &>/dev/null
        if [ $? -ne 0 ];then
                useradd $name &>/dev/null
                pass=`echo $RANDOM|md5sum|cut -c 1-10`
                echo $pass |passwd --stdin $name &>/dev/null
                echo $name:$pass >> /tmp/user.log
        else
                echo "$user_list 已存在"
                break
        fi
done

案例五:

现在我们要模拟黑客,来扫描,指定网段内存活的主机

for n in `seq 255`;do
  ping 10.0.0.$n
done



## 优化后的
#!/bin/bash

. /etc/init.d/functions
#for n in `seq 254`;do
#  ping -c 1 10.0.0.$n
#done

for n in `seq 254`;do
{
  ping -c1 -W1 -i1 10.0.0.$n &>/dev/null
  if [ $? -eq 0 ];then
    action 10.0.0.$n /bin/true
    for ;do
    {
        xxx
    } &
    usleep 300
    done
  fi
} &
usleep 300
done

#### 扫描存活的主机后,在存活的主机上,扫描都开了哪些端口?
#!/bin/bash

. /etc/init.d/functions

for n in `seq 3 254`;do
  ping -c1 -W1 -i1 10.0.0.$n &>/dev/null
  if [ $? -eq 0 ];then
    action 10.0.0.$n /bin/true
    for port in `seq 65535`;do
        {
        res=`echo ''|telnet 10.0.0.$n $port 2>/dev/null|grep 'Connected'|wc -l`
        if [ $res -ne 0 ];then
                action "10.0.0.$n 主机端口: $port" /bin/true
        fi
        } &
        usleep 500
    done
  fi
done

标签:脚本,常用,null,dev,echo,nginx,install,fi,企业
来源: https://www.cnblogs.com/wangchengww/p/16521049.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有