技术标签: javascript 开发语言 ecmascript
目录
#批量创建100个用户 user01 ~ user100
user=user
#创建存储用户和密码的文件
touch user.txt
txt=user.txt
#循环遍历1到100
for i in {1..100}
do
random=$[$RANDOM%100]
if [ $i -lt 10 ];then
name="${user}0$i"
useradd $name
echo $random | passwd --stdin $name &> /dev/null
echo -e "$name $random \t" >> $txt
echo "$name 创建成功"
else
name="$user$i"
useradd $name
echo $random | passwd --stdin $name &> /dev/null
echo -e "$name $random \t" >> $txt
echo "$name 创建成功"
fi
done
[root@ansible ~]# vim sd.sh
#!/bin/basha
RSY=$(cat /proc/net/dev | grep ens33 | sed 's/:/ /g' | awk '{print $10}' |awk '{print $1/1048576 "MB/s"}')
echo $RSY
[root@ansible ~]# watch -n 1 sh sd.sh 加上watch -n 1 来判断网卡实时流量
cat /var/log/nginx/access.log |awk '{print $1,$4,$5,$6,$7,$8,$9, $10,$12,$13.$14,$15,$16,$17,$18,$19,$10}'|sort |uniq -c |sort -nr
[root@client1 ~]# cat /var/log/nginx/access.log |awk '{print $1, $4,$5,$6, $7 ,$8, $9, $10,$12,$13.$14,$15,$16,$17,$18,$19,$10}'|sort |uniq -c |sort -nr 3 192.168.1.119 [17/Jul/2023:09:52:02 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0 2 192.168.1.119 [17/Jul/2023:09:52:03 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0 1 192.168.1.119 [17/Jul/2023:09:52:04 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0 1 192.168.1.119 [17/Jul/2023:09:52:01 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0 1 192.168.1.119 [17/Jul/2023:09:52:00 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0 1 192.168.1.119 [17/Jul/2023:09:51:57 +0800] "GET /img/header-background.png HTTP/1.1" 200 82896 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 82896 1 192.168.1.119 [17/Jul/2023:09:51:57 +0800] "GET /favicon.ico HTTP/1.1" 404 3650 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 3650 1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET /img/html-background.png HTTP/1.1" 200 1801 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1801 1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET /img/centos-logo.png HTTP/1.1" 200 3030 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 3030 1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET / HTTP/1.1" 200 4833 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 4833
192.168.1.119
:客户端的IP地址。- [17/Jul/2023:09:52:02 +0800]:请求发生的日期和时间,以及时区偏移量。
"GET / HTTP/1.1"
:HTTP请求的方法、请求的路径和HTTP协议的版本。200
:HTTP响应的状态码,这里是200,表示请求成功。4833
:HTTP响应的内容长度。"-"
:表示没有提供引用页面的信息。"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82"
:客户端使用的浏览器的用户代理标识。- 该日志条目表示在2023年7月17日09:52:02,来自IP地址为192.168.1.119的客户端发送了一个成功的GET请求,并返回了4833个字节的内容。客户端使用的浏览器是基于Chrome 114.0.0.0版本的Edge浏览器。
[root@bogon ~]# vim dd.sh
RT=$(cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $1}')
FG=$( cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $2}')
if [ "$RT" -gt 250 ] 限定次数250 超过就屏蔽
then
echo "正在防御"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$FG' drop"
systemctl restart firewalld
else
echo "无事发生"
fi
[root@bogon ~]# watch -n 1 sh dd.sh
如果超过限定次数
会自动防范显示 管理员检查IP情况
不过要退出 watch 才会使IP屏蔽
要借助Ansible自动化运维工具
[root@bogon ~]# watch sh dd.sh
[root@bogon ~]# vim dd.sh
#!/bin/bash
DF=$(ansible 192.168.1.* -m command -a "df -hT")
aa=$(echo "$DF" | grep "/$" | awk '{print $5}' | awk '{print $1}')
GG=$(ansible 192.168.1.* -m command -a "df -hT" )
gg=$(echo "$GG" | awk '{print $1, $5, $6}')
echo "全面分析: $gg"
echo "磁盘空间已使用: $aa"
if [ "$aa" = "50" ]; then
echo "磁盘已经沾满不能存储数据!!!"
fi
[root@ansible ~]# sh dd.sh 全面分析: 192.168.1.111 rc=0 >> 文件系统 可用 已用% devtmpfs 475M 0% tmpfs 487M 0% tmpfs 473M 3% tmpfs 487M 0% /dev/mapper/centos-root 16G 11% /dev/sda1 847M 17% tmpfs 98M 0% 192.168.1.108 rc=0 >> 文件系统 可用 已用% devtmpfs 898M 0% tmpfs 910M 0% tmpfs 893M 2% tmpfs 910M 0% /dev/mapper/centos-root 16G 11% /dev/sda1 834M 18% tmpfs 182M 0% 磁盘空间已使用: 16G 16G
RT=$( cat /var/log/mariadb/mariadb.log |grep -n '[ERROR]' |wc -l)
GG=$( cat /var/log/mariadb/mariadb.log |grep -n '[ERROR]')
if [ "$RT" -gt 0 ]; then
echo "主状态丢失: $GG"
else
echo "主无事发生"
fi
RT=$( cat /var/log/mariadb/mariadb.log |grep -n 'up' |wc -l)GG=$( cat /var/log/mariadb/mariadb.log |grep -n 'up')
if [ "$RT" -gt 0 ]; then
echo "从状态丢失: $GG"
else
echo "从无事发生"
fi
宕掉主 [root@ansible ~]# systemctl stop mariadb
[root@bogon ~]# watch sh dd.sh
主状态丢失: 5:230717 10:48:00 InnoDB: Using Linux native AIO
26:230717 10:48:02 [Note] Plugin 'FEEDBACK' is disabled.
28:230717 10:48:02 [Note] Event Scheduler: Loaded 0 events
32:230717 10:53:31 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='192.168.1.118', master_port='3306', master_log_file='mysql-binlog.000003', master_log_pos='475'.
34:230717 10:53:46 [Note] Slave I/O thread: connected to master '[email protected]:3306',replication started in log 'mysql-binlog.000003' at position 475
36:230717 10:55:51 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-binlog.000003' at position 475
37:230717 10:55:51 [ERROR] Slave I/O: error reconnecting to master '[email protected]:3306' - retry-time: 60 retries: 86400 message: Can't connect to MySQL server on '192.168.1.118' (111), Error_code: 2003
40:230717 11:00:39 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-binlog.000004' at position 245
41:230717 11:00:39 [ERROR] Slave I/O: error reconnecting to master '[email protected]:3306' - retry-time: 60 retries: 86400 message: Can't connect to MySQL server on '192.168.1.118' (111), Error_code: 2003
从无事发生
#!/bin/bash
WZ="www.baidu.com www.ctnrs.com www.der-matech.net.cn www.der-matech.com.cn www.der-matech.cn www.der-matech.top www.der-matech.org"
for URL in $WZ; do
CS=0
for ((i=1;i<=3;i++)); do
WZ=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL)
if [ $WZ -eq 200 ]; then
echo "$URL OK"
break
else
echo "$URL retry $CS"
let CS++
fi
done
if [ $CS -eq 3 ]; then
echo "Warning: $URL Access failure!"
echo "网站$URL坏掉,请及时处理"
echo "网站高危$URL"
fi
done
[root@client1 ~]# sh 1.txt www.baidu.com retry 0 www.baidu.com OK www.ctnrs.com retry 0 www.ctnrs.com retry 1 www.ctnrs.com retry 2 Warning: www.ctnrs.com Access failure! 网站www.ctnrs.com坏掉,请及时处理 网站高危www.ctnrs.com www.der-matech.net.cn retry 0 www.der-matech.net.cn retry 1 www.der-matech.net.cn retry 2 Warning: www.der-matech.net.cn Access failure! 网站www.der-matech.net.cn坏掉,请及时处理 网站高危www.der-matech.net.cn www.der-matech.com.cn OK
[root@bogon ~]# vim dd.sh
#!/bin/bash
DF=$(df -hT)
aa=$(echo "$DF" | grep "/$" | awk '{print $5}' | awk '{print $1}')
echo "磁盘空间已使用: $aa"
DD=$(free -h |sed -n '2p' |awk '{print $2}')
echo "内存-总大小: $DD"
FF=$(free -h |sed -n '2p' |awk '{print $4}')
echo "可以空闲内存: $FF"
KK=$(free -h |sed -n '2p' |awk '{print $7}')
echo "磁盘缓存: $KK"
GG=$( vmstat |awk '{if(NR==3) print $13+$14}')
echo "CPU-使用率: $GG"
LL=$(vmstat |awk '{if(NR==3) print $16}')
echo "等待磁盘IO响应使用率: $LL"
[root@clint2 ~]# sh 1.txt
磁盘空间已使用: 16G
内存-总大小: 1.8G
可以空闲内存: 223M
磁盘缓存: 1.2G
CPU-使用率: 0
等待磁盘IO响应使用率: 0
[root@bogon ~]# vim dd.sh
#!/bin/bash
cat /proc/stat |egrep -n '(cpu)' |sort -nr
[root@clint2 ~]# sh 1.txt
2:cpu0 4877 10 5482 1964823 73 0 183 0 0 0
1:cpu 4877 10 5482 1964823 73 0 183 0 0 0或者
# yum -y install sysstat
sar -u 1 5
[root@clint2 ~]# sar -u 1 5
Linux 3.10.0-1160.el7.x86_64 (clint2) 2023年07月17日 _x86_64_ (1 CPU)11时12分11秒 CPU %user %nice %system %iowait %steal %idle
11时12分12秒 all 0.00 0.00 0.00 0.00 0.00 100.00
11时12分13秒 all 0.00 0.00 0.00 0.00 0.00 100.00
11时12分14秒 all 0.00 0.00 1.00 0.00 0.00 99.00
11时12分15秒 all 0.00 0.00 0.00 0.00 0.00 100.00
11时12分16秒 all 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: all 0.00 0.00 0.20 0.00 0.00 99.80
watch命令是一个用于周期性执行指定命令并显示结果的Linux/Unix命令。它可以在终端实时监视命令的输出,并以指定的时间间隔更新显示结果。watch命令非常有用,特别是在需要持续监控某个命令的输出时。
基本语法: watch [选项] 命令
常用选项: -n 或 --interval:指定刷新间隔时间,默认为2秒。 -d 或 --differences:高亮显示变化的部分。 -t 或 --no-title:不显示标题栏。 -h 或 --help:显示帮助信息。
使用示例:
监控系统负载情况: watch uptime
监控磁盘空间使用情况: watch df -h
监控网络连接情况: watch netstat -an
监控进程状态: watch ps aux
监控日志文件变化: watch tail -n 10 /var/log/syslog
监控文件夹大小变化: watch du -sh /path/to/folder
watch命令会周期性地执行指定的命令,并将命令的输出结果实时显示在终端上。每次更新显示结果时,watch会清除终端屏幕并重新显示命令的输出。通过使用不同的选项,可以自定义watch命令的行为,例如设置刷新间隔时间、高亮显示变化的部分等。
需要注意的是,watch命令会一直执行,直到用户手动中断(按下Ctrl+C)。因此,在使用watch命令时,需要注意命令的执行时间和资源消耗,以免对系统性能产生不良影响。
文章浏览阅读267次。十二届蓝桥杯省赛真题G题—砝码称重【问题描述】你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。那么这套砝码最少需要包含多少个砝码?注意砝码可以放在天平两边。【输入格式】输入包含一个正整数 N。【输出格式】输出一个整数代表答案。【样例输入】7【样例输出】3【样例说明】3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。1 = 1;2 = 6 − 4 (天平一边放 6,另一边放 4);3 = 4 − 1;4 = 4;5_两边砝码选择规律1 3 9 27
文章浏览阅读1.3k次。最近设计了一个数据录入界面。在ACCESS中用VBA实现了,不知道在ASP.NET中应该如何实现?思路如下:1.根据相应的单据选择省份、商业单位,单击“开始录入”,激活下面的录入表格。2.在录入表格中选择地区、类别、商业名称、品名、规格后输入数量和发货日期。其中年份和月份、录入时间由系统自动生成。具体要求:1.省份、商业单位、地区等字段可以在组合框中选择,也可以直接输入,若输入的值在列表中存在,则..._收入预算基准数据录入功能界面
文章浏览阅读937次。AI 研习社再前几周的时候,发文说能提供5张2018年A2M人工智能与机器学习创新峰会的门票,机缘巧合下,作为一个小小普通译者,我得到了门票一张,非常开心,于是在上周末(8月25-26日)就去听了下。 门票长下面这样(背后有两张午餐券) 现场是有3个会议厅,每个会议厅在当天上午或下午是进行同一个大主题下的不同的分享。门票上写着所有的会议题目,所以可以根据自己喜欢的自由搭配~ ..._a2m峰会
文章浏览阅读1.5w次,点赞26次,收藏118次。此博客使用方法:点击“阅读更多”加载全文内容,ctrl键+F键,可呼出定位查找。缩写及其专业术语缩写 全称 释义 参考文献 6LoWPAN IPv6 over low-power wirelwss area networks 面向低功耗无线局域网的IPv6 AAL ATM adaptation layer ATM适配层 ..._通信工程术语
文章浏览阅读394次,点赞10次,收藏9次。这样,当前端页面中通过 AJAX 发起 GET 请求到 `backend.php` 后,可以通过回调函数中的 `xhr.responseText` 获取到后端返回的数据,并进行处理。注意,如果要发送 POST 请求,可以将 `open` 方法的第一个参数改为 'POST',并在 `send` 方法中添加需要发送的数据。在 PHP 后端接口中,可以通过 `$_GET` 或 `$_POST` 超全局变量来获取前端发送的数据,然后根据处理逻辑返回相应的数据。// 处理后端返回的数据。// 处理 GET 请求。_html 通过ajax发送关键字从后台查询数据
文章浏览阅读1.1k次,点赞40次,收藏45次。函数内部调用自己的函数称为递归函数,这点大家应该早有了解。那什么是递归?递归这个词需要拆分成递和归来理解。递是传参,归则是返回,一切函数在调用时必然经过这两个步骤。在递归函数中,由于调用自身的属性,传参过程和返回过程都是连续的。
文章浏览阅读624次。数据库技术前言Q1.什么是数据库?存储数据的仓库Q2.常见的数据库有哪些?SQL server(微软)Access(微软)Oracle(甲骨文)Mysql(甲骨文)DB2(IBM)Kingbase(国产-人大金仓)Q3.哪些地方使用数据库?超市商品管理系统—商品信息银行管理系统—账户信息网上购物商场—商品信息和账..._数据库员工编号数据类型
文章浏览阅读45次。LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity 属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置.android:layout_gravity是用来设置该view相对与父view 的位置...
文章浏览阅读124次。Python提供了很多数值优化工具和算法,如scipy库、numpy库等,其中scipy库是一个强大的科学计算库,包括最优化、线性代数、统计分析等多个领域的功能,其中最优化模块提供了多种求解优化问题的算法,如Nelder-Mead、Powell、CG等,这些算法可以帮助用户求解各种优化问题,如非线性规划、函数拟合、曲线拟合等。在上述代码中,模拟了一个银行排队情景,有多个顾客到达银行,然后等待柜员服务,每个顾客的服务时间是1-3分钟,顾客的到达时间服从参数为5的指数分布。一、Python仿真优化。_算法仿真实验可以使用python吗?
文章浏览阅读4.9k次。Quartz 简介在 JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介..._springboot quartz standby shutdown
文章浏览阅读1.6k次。reflect函数可以支持在sql中调用java中的自带函数,秒杀一切udf函数。使用java.lang.Math当中的Max求两列中最大值创建hive表create table test_udf(col1 int,col2 int) row format delimited fields terminated by ',';准备数据并加载数据cd /export/ser..._hive reflect
文章浏览阅读2.6k次,点赞7次,收藏4次。vue 项目打包正式环境时,是没有 vue-devtools 选项卡的,没法看 vue 内部的数据使用以下几步可以实现在不改代码的情况下开启 vue-devtools选中 Source 选项卡,找到打包好的 app.js,并格式化ctrl + f 搜索$mount并在new那里打断点,new后面的对象就是 Vue 对象,需要记住该变量名,下一步要用到F5 刷新页面就就会进入断点,并在控制台输入d["default"].config.devtools = true(.config之前的_线上打开vuetools