【Linux中高级运维: 第55天——Shell编程】第6章:解决类DDOS攻击+批量改名+批量生成随机字符文件名

网友投稿 844 2022-11-27

【Linux中高级运维: 第55天——Shell编程】第6章:解决类DDOS攻击+批量改名+批量生成随机字符文件名

【Linux中高级运维: 第55天——Shell编程】第6章:解决类DDOS攻击+批量改名+批量生成随机字符文件名

面试题1:已知test.txt文件里含有如下域名:

etiantian.orgbbs.etiantian.orgetiantian.orgblog.etiantian.orgetiantian.orgetiantian.orgblog.etiantian.org

统计每个域名出现的次数,并且按照从多到少排序

uniq 去重 -c计数sort

[root@web01 /server/scripts]# sort test.txt|uniq -c|sort -rn 4 etiantian.org 2 blog.etiantian.org 1 bbs.etiantian.org [root@web01 /server/scripts]# awk '{++S[$1]} END {for(key in S) print S[key],key}' test.txt|sort -rn

第一篇:详解linux netstat输出的网络连接状态信息​​​ 第二篇:庖丁解牛获取连接状态数的awk数组命令 第三篇:awk数组命令经典生产实战应用拓展 第四篇:老男孩培训第八节课前awk考试题案例(门户面试题解答) 第五篇:linux生产服务器有关网络状态的优化措施(告一段落) -I INPUT -s IP地址 -j DROP。

[root@web01 /server/scripts]# cat ctrl_ddos1.sh #!/bin/bash############################################################### File Name: ctrl_ddos.sh# Version: V1.0# Author: oldboy# Organization: oldboyedu.com##############################################################jisuan(){ awk -F "[ :]+" '/ESTABLISHED/{print $(NF-3)}' netstat.log|sort|uniq -c|sort -rn|head -10 >/tmp/ip.log while read line do ip=`echo $line|awk '{print $2}'` count=`echo $line|awk '{print $1}'` if [ $count -gt 10 ] && [ `iptables -nL|grep "$ip"|wc -l` -lt 1 ] then echo "$ip iptables -I INPUT -s $ip -j DROP else echo "$ip fi done

for 变量名 in 变量取值列表do 指令...donefor n in 1 2 3 4 5do echo $ndonefor n in {1..5} do echo $ndonefor n in `seq 5`do echo $ndone

第二种for循环语句称之为C语言型for循环语句,其语法结构如下:

for((exp1;exp2;exp3))do 指令...donefor ((i=1;i<=5;i++))do echo $idoneecho ====================i=1while ((i<=5))do echo $i ((i++))done

随机数:

1、openssl随机数

[root@web01 /server/scripts]# openssl rand -base64 8|cut -c 1-8M7R3cvSl[root@web01 /server/scripts]# openssl rand -base64 8|cut -c 1-8

2、简单random随机数

[root@web01 /server/scripts]# echo $RANDOM28127RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. Thesequence of random numbers may be initialized by assigning a value to RANDOM. If RANDOM isunset, it loses its special properties, even if

3、时间随机数

[root@web01 /server/scripts]# date +%N783556744[root@web01 /server/scripts]# date +%N|md5sum|cut -c 5-13

4、

[root@web01 /server/scripts]# head /dev/urandom|cksum|md5sumf448a3b537ca1d8883079efc12705282 -[root@web01 /server/scripts]# head /dev/urandom|cksum|md5sum

5、

[root@web01 /server/scripts]# cat /proc/sys/kernel/random/uuid4c2c10a8-e340-48e8-a61e-65b052fe1ea8[root@web01 /server/scripts]# cat /proc/sys/kernel/random/uuid

6、

mkpasswd命令依赖于数据包expect,因此必须通过yum install expect

使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下:

[root@oldboy scripts]# ls /oldboyapquvdpqbk_oldboy.html mpyogpsmwj_oldboy.html txynzwofgg_oldboy.htmlbmqiwhfpgv_oldboy.html mtrzobsprf_oldboy.html vjxmlflawa_oldboy.htmljhjdcjnjxc_oldboy.html qeztkkmewn_oldboy.htmljpvirsnjld_oldboy.html ruscyxwxai_oldboy.htmltouch apquvdpqbk_oldboy.htmltouch bmqiwhfpgv_oldboy.htmltouch jhjdcjnjxc_oldboy.htmltouch

1、10位小写字母随机数:

[root@web01 /server/scripts]# openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11

2、命令行手工搞定一个

[root@web01 /server/scripts]# random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11`[root@web01 /server/scripts]# echo $randomqvnprjvpey[root@web01 /server/scripts]# echo $randomqvnprjvpey[root@web01 /server/scripts]# random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11`[root@web01 /server/scripts]# echo $randomftlhpzuvcg[root@web01 /server/scripts]# touch ${random}_oldboy.html[root@web01 /server/scripts]# random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11`[root@web01 /server/scripts]# touch ${random}_oldboy.html

3、搞定多个脚本for循环

[root@web01 /server/scripts]# vim 19_1_1.sh#!/bin/bash############################################################### File Name: 19_1_1.sh# Version: V1.0# Author: oldboy# Organization: oldboyedu.com##############################################################Path=/oldboy[ -d $Path ] || mkdir $Pathfor n in {1..10}do random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11` touch $Path/${random}_oldboy.html done [root@web01 /server/scripts]# sh 19_1_1.sh[root@web01 /server/scripts]# ls /oldboy/

19.1.2 企业Shell面试题2:批量改名特殊案例 将上面试题19.1.1中结果文件名中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写HTML。 三种方法实现:

1、先命令行处理一个

[root@web01 /oldboy]# file1=kfixfkghqz_oldboy.html[root@web01 /oldboy]# mv $file1 ${file1/oldboy.html/oldgirl.HTML}

2、脚本处理多个 方法1:

Path=/oldboy[ -d $Path ] || mkdir $Pathcd $Pathfor file1 in `ls`do mv $file1 ${file1/oldboy.html/oldgirl.HTML} done

方法2: rename专业改名

[root@web01 /oldboy]# rename "oldgirl.HTML" "oldboy.html" *HTML[root@web01 /oldboy]# lsfzewmfbowb_oldboy.html kfixfkghqz_oldboy.html qaxuezrdyh_oldboy.html vkftijhssz_oldboy.htmlibcmutcmyj_oldboy.html ovqxxevhlw_oldboy.html rkoxkozsfs_oldboy.htmlinpdcqsmfo_oldboy.html paoreutqqd_oldboy.html sksdayeamk_oldboy.html[root@web01 /oldboy]# rename "oldboy.html" "oldgirl.HTML" *html[root@web01 /oldboy]# ls

方法3:

mv fzewmfbowb_oldboy.html fzewmfbowb_oldgirl.HTMLmv fzewmfbowb_oldboy.html fzewmfbowb_oldgirl.HTMLmv fzewmfbowb_oldboy.html fzewmfbowb_oldgirl.HTML[root@web01 /oldboy]# ls *.html|awk -F '_' '{print "mv",$0,$1"_oldgirl.HTML"}'mv fzewmfbowb_oldboy.html fzewmfbowb_oldgirl.HTMLmv ibcmutcmyj_oldboy.html ibcmutcmyj_oldgirl.HTMLmv inpdcqsmfo_oldboy.html inpdcqsmfo_oldgirl.HTMLmv kfixfkghqz_oldboy.html kfixfkghqz_oldgirl.HTMLmv ovqxxevhlw_oldboy.html ovqxxevhlw_oldgirl.HTMLmv paoreutqqd_oldboy.html paoreutqqd_oldgirl.HTMLmv qaxuezrdyh_oldboy.html qaxuezrdyh_oldgirl.HTMLmv rkoxkozsfs_oldboy.html rkoxkozsfs_oldgirl.HTMLmv sksdayeamk_oldboy.html sksdayeamk_oldgirl.HTMLmv vkftijhssz_oldboy.html vkftijhssz_oldgirl.HTML[root@web01 /oldboy]# [root@web01 /oldboy]# [root@web01 /oldboy]# ls *.html|awk -F '_' '{print "mv",$0,$1"_oldgirl.HTML"}'|bash[root@web01 /oldboy]# ls

#!/bin/shFilename=_oldgirl.HTMLDirname="/oldboy"cd $Dirname||exit 1for n in `ls` do name=$(echo ${n}|awk -F '_' '{print $1}') mv $n ${name}${Filename}done

19.1.1 企业Shell面试题1:批量生成随机字符文件名案例

使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含oldboy固定字符串加10个随机小写字母,名称示例如下:

[root@oldboy scripts]# ls /oldboy

19.1.3 企业Shell面试题3:批量创建特殊要求用户案例

批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机数,要求字符和数字等混合)。 不用for循环的实现思路:解答: 本题的详细答案见第11章范例11_14,此处仅作为Shell案例集中收集整理。

范例12_4:已知下面的字符串是通过将RANDOM随机数采用md5sum加密后任意取出连续10位的结果,请破解这些字符串对应的md5sum前的数字? 4fe8bf20ed

19.1.8 企业Shell面试题8:筛选符合长度的单词案例

利用bash for循环打印下面这句话中字母数不大于6的单词(某企业面试真题)。 I am oldboy teacher welcome to oldboy training class 解答: 本题的详细答案见第13章范例13_4,此处仅作为Shell案例集中收集整理。

1)字符串长度

[root@web01 /server/scripts]# oldboy="I am oldboy."[root@web01 /server/scripts]# echo ${#oldboy}12[root@web01 /server/scripts]# echo ${oldboy}|wc -L12[root@web01 /server/scripts]# expr length "${oldboy}"12[root@web01 /server/scripts]# echo $oldboy|awk '{print length}'12[root@web01 /server/scripts]# echo $oldboy|awk '{print length($0)}'12chars="I am oldboy teacher welcome to oldboy training class"for word in $charsdo if [ ${#word} -le 6 ] then echo $word fidone [root@web01 /server/scripts]# sh 19_1_8.sh

19.1.1 企业Shell面试题1:批量生成随机字符文件名案例

使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含oldboy固定字符串加10个随机小写字母,名称示例如下:

[root@oldboy scripts]# ls /oldboy

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【ReactJs+springBoot项目——租房】第15章:MongoDB集群之复制集群 +MongoDB集群之分片集群+ 日志规范 +异常规范+其它规范
下一篇:【K8S运维知识汇总】第7天3:安装部署prometheus-server
相关文章

 发表评论

暂时没有评论,来抢沙发吧~