猜随机数的大小

描述:

写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入:并且提示用户输入的数字比预设数字大或者小

分析:

1:随机数字是如何生成的

2:这是一个死循环,直到猜对了才能退出

3:需要判断大小

脚本实现:

[root@jumpserver- scripts]# cat num_random.sh
#!/bin/bash num=$(echo $(($RANDOM%+)))
i= while true
do
read -p "请猜一下这个数是多少:" number
let i++
if [[ ! $number =~ ^[-]+$ ]];then
echo "请检查输入的是否为数字"
elif [ $number -gt $num ];then
echo "你输入的数大了!"
elif [ $number -lt $num ];then
echo "你输入的数小了- -"
else
echo "恭喜你!都会抢答了。"
echo "你一共猜了 $i 次"
exit
fi
done

实现的效果:

[root@jumpserver-70 scripts]# sh num_random.sh
请猜一下这个数是多少:10
你输入的数小了- -
请猜一下这个数是多少:50
你输入的数小了- -
请猜一下这个数是多少:90
你输入的数大了!
请猜一下这个数是多少:80
你输入的数小了- -
请猜一下这个数是多少:85
你输入的数大了!
请猜一下这个数是多少:83
你输入的数小了- -
请猜一下这个数是多少:84
恭喜你!都会抢答了。
你一共猜了 7 次

文件中带随机数并修改

描述:

请写出:使用for循环在/opt目录下通过随机小写10个字母加固定字符串test批量创建10个html文件,创建完成后,讲test全部改为test_done(for循环实现),并html为大写HTML

分析:

1:随机是个小写字母 file=$(uuidgen | sed -r 's#[0-9-]+##g'|cut -c 1-10)

2:创建的文件名字放到一个文件中,再取出文件名

3:用mv改名用替换方式

脚本实现:

[root@jumpserver- scripts]# cat make_file.sh
#!/bin/bash for i in {..}
do
file=$(uuidgen | sed -r 's#[0-9-]+##g'|cut -c -)
[ -f test_$file.html ]
if [ $? -eq ];then
echo "这个文件已经存在。。"
else
touch /opt/test_${file}.html &>/dev/null
echo test_${file}.html >>/opt/test1.txt
echo "你已经创建了 test_$file.html 文件"
fi
done echo "------------正在执行操作------------" for n in {..}
do
name=$(sed -rn ${n}p /opt/test1.txt | sed -r 's#.*_(.*).html#\1#g')
name_new=test_done_${name}.HTML
mv /opt/test_${name}.html /opt/$name_new
echo "文件 $name_new 修改成功"
done > /opt/test1.txt

第二种方法:

[root@web03 ~]# cat for_file2.sh
#!/bin/bash #.循环创建10个随机文件名的html文件
for i in {..}
do
File_Name=$(openssl rand -base64 |sed 's#[^a-z]##g'|cut -c1-)
touch test_${File_Name}.html
done #.查找当前目录下.html结尾的文件,写入一个文件中
find ./ -type f -name "*.html" > .txt
for i in $(cat .txt)
do
#.将带html修改为HTML ${i/html/HTML} 将文件名后缀是html替换为HTML
mv $i ${i/html/HTML}
done

实现效果:

[root@jumpserver- scripts]# sh make_file.sh
你已经创建了 test_fababba.html 文件
你已经创建了 test_cdedacafaf.html 文件
你已经创建了 test_eedbacbafc.html 文件
你已经创建了 test_adbfdeb.html 文件
你已经创建了 test_afdddcdebe.html 文件
你已经创建了 test_bacfaeeacf.html 文件
你已经创建了 test_bcfadfbcdd.html 文件
你已经创建了 test_faeebfcdc.html 文件
你已经创建了 test_eebecffac.html 文件
你已经创建了 test_eefca.html 文件
------------正在执行操作------------
文件 test_done_fababba.HTML 修改成功
文件 test_done_cdedacafaf.HTML 修改成功
文件 test_done_eedbacbafc.HTML 修改成功
文件 test_done_adbfdeb.HTML 修改成功
文件 test_done_afdddcdebe.HTML 修改成功
文件 test_done_bacfaeeacf.HTML 修改成功
文件 test_done_bcfadfbcdd.HTML 修改成功
文件 test_done_faeebfcdc.HTML 修改成功
文件 test_done_eebecffac.HTML 修改成功
文件 test_done_eefca.HTML 修改成功
[root@jumpserver- opt]# ll
total
-rw-r--r-- root root Sep : test1.txt
-rw-r--r-- root root Sep : test_done_aadacfbdea.HTML
-rw-r--r-- root root Sep : test_done_badbcedabf.HTML
-rw-r--r-- root root Sep : test_done_ccdbddfaff.HTML
-rw-r--r-- root root Sep : test_done_daafffacfb.HTML
-rw-r--r-- root root Sep : test_done_dbdecdabdc.HTML
-rw-r--r-- root root Sep : test_done_dceafb.HTML
-rw-r--r-- root root Sep : test_done_dcedbcbfa.HTML
-rw-r--r-- root root Sep : test_done_eacfaabcff.HTML
-rw-r--r-- root root Sep : test_done_ecbceabcbd.HTML
-rw-r--r-- root root Sep : test_done_feceeecbdd.HTML

查看访问日志访问最高的ip

分析:

awk方法取到access.log的第一列ip地址。然后使用sort uniq 进行排列

命令实现:

awk '{print $1}' access.log- | sort |uniq -c |sort -rn | head -

把磁盘状态写进文件

分析:

1:磁盘状态查看  df -h

2:   把状态写进文件 df -h >$(date +%F).log

脚本实现:

#!/bin/bash

time = $(date + %F)
df -h > $time.log

查找文件->打包->还原

分析:

1:在/backup目录下创建.txt 文件 ,并筛选出来

2:批量把txt为结尾的文件改为txt.bak

3:   把所有的.bak文件打包压缩为123.tar.gz

4: 批量还原文件的名字,及把增加的.back再删除

脚本实现:

[root@web03 ~]# cat file.sh 

#.修改名称
find /backup/ -type f -name "*.txt" > /tmp/.txt for i in $(cat /tmp/.txt)
do
mv $i ${i}.bak
done #.重新查找,bak文件,然后进行打包
cd /backup && tar czf .tar.gz $(find /backup/ -type f -name "*.bak") #.将.bak还原.txt
find /backup/ -type f -name "*.bak" >/tmp/.txt for i in $(cat /tmp/.txt)
do
mv $i ${i%.*}
done

实现效果:

监控80端口是否开启

描述:

写一个脚本,判断本机的80端口(加入是httpd)是否开启,如果开启则什么都不用干,如果发现端口不存在,那么重启一下http服务,并发送邮件通知自己,脚本写好后每分钟执行一次,也可以写一个死循环

分析:

1:检测80端口是否正常  netstat -lntp |grep ":80"

2:   如果不正常重启nginx

3: 如果进程是启动的则重启,否则直接启动

脚本实现:

[root@web03 ~]# cat status.sh
#!/usr/bin/bash
while true
do
#.检查Nginx是否存或,让wc统计行数,方便整数比对
Nginx_status=$(netstat -lntp|awk '{print $4}'|grep :$|wc -l) #.检查Nginx的值是1还是0,如果是0则代表没启动Nginx,如果是1则不做处理
if [ $Nginx_status -eq ];then
echo "正在尝试重启..."
systemctl restart nginx &>/dev/null
if [ $? -eq ];then
echo "重启成功..."
else
echo "重启失败"
fi
fi
#.判断结束后,休息5s
sleep
done

网页出现502错误重启php

描述:

现在有一个lnmp环境, 经常出现502错误, 只要一重启php-fpm即可解决,如果不重启则会持续非常长的一段时间,所有有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下php-fpm

分析:

1.动态的监控日志尾部最后300行,统计502出现的总50次数
2.精准判断是否是502错误,不是则不处理,是则重启php-fpm

脚本实现:

#.准备对应的Nginx环境
[root@web03 ~]# cat /etc/nginx/conf.d/discuz.conf
server {
listen ;
root /code;
index index.html;
server_name _; location / {
proxy_pass http://127.0.0.1:8888; }
location /test {
root /code;
index inde.html;
}
} .编写对应的环境
[root@web03 ~]# cat s.sh
#!/usr/bin/bash
while true
do #.实时的抓取日志尾部的信息,筛选出502,进行统计
LogFile=$(tail -n300 /var/log/nginx/access.log|grep |wc -l) #.使用if进行判断
if [ $LogFile -gt ];then
echo "正常重启php-fpm"
pkill php-fpm && systemctl start php-fpm &>/dev/null
if [ $? -eq ];then
echo "重启成功"
else
echo "重启失败"
fi
else
echo "实时监控日志没有达到300行502"
fi
sleep
done

使用ab工具进行压力测试:

故障的 url: ab -n  -c  http://10.0.0.9/
恢复的 url: ab -n -c http://10.0.0.9/test/index.html

取出给定单词的长度

描述:

用shell打印下面这句话中字母数小于6个的单词Bash also interprets a number of multi-user optios

分析:

1.使用循环遍历
2.怎么统计单词数值 wc -c

脚本实现:

[root@web03 ~]# cat num.sh
#!/usr/bin/bash for i in Bash also interprets a number of multi-user optios
do
#.传统获取变量的个数
#re=$(echo -n $i|wc -c) #.获取变量的个数
re=$(echo ${#i})
#.进行数字比对
if [ $re -lt ];then
echo $i
fi
done

shell脚本练习题->1的更多相关文章

  1. shell脚本练习题(更新中...)

    练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: #!/bin/bash #caculate the to `; do sum=$[ ...

  2. shell脚本练习题

    下面列出了几个linux学习中的shell脚本题目 1.九九乘法表 #!/bin/bash echo "九九乘法表" # 注意((之间不能有空格.加减乘除的格式.还有转义字符\*. ...

  3. linux 的基本操作(编写shell 脚本)

    终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...

  4. shell脚本结构

    echo $? 代表上一次命令的状态返回值,‘0’则代表为真<执行成功>,‘非零’则代表为假<执行失败>. shell脚本: <判断老男孩的年纪> [root@bo ...

  5. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  6. 第三部分shell编程3(shell脚本2)

    7. if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样if ...

  7. shell基础练习题

    shell 基础练习题 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin ...

  8. Shell循环练习题

    Shell循环练习题 目录 Shell循环练习题 1.计算从1到100所有整数的和 2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和 3.求从1到100所有整数的偶数和.奇数和 ...

  9. Shell条件练习题

    Shell条件练习题 目录 Shell条件练习题 1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限 2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的 ...

随机推荐

  1. USACO Section 1.5 Superprime Rib 解题报告

    题目 题目描述 超级素数的定义如下:如果有个素数我们从右往左依次去掉一位数,每次去掉一位数剩下的数仍然是素数,那么我们称这个数是超级素数.例如7331,这是一个素数,从右往左依次去掉一位数733, 7 ...

  2. 【bzoj2780】 Sevenk Love Oimaster

    http://www.lydsy.com/JudgeOnline/problem.php?id=2780 (题目链接) 题意 给出很多主串和很多询问串,求一个询问串在多少主串中出现过 Solution ...

  3. 【uoj129】 NOI2015—寿司晚宴

    http://uoj.ac/problem/129 (题目链接) 题意 给出2~n这n-1个数,求选2个集合,使得从两集合中任意各选取1个数出来它们都互质.求方案数. Solution PoPoQQQ ...

  4. RRDtool绘制lvs连接数图形

    需求:用RRDtool绘制lvs的连接数图形 RRDtool是一个强大的绘图工具,作者是Tobias Oetiker. RRD全称Round Robin Database,轮转数据库,也是一个时间序列 ...

  5. 遇到问题----java----myeclipse或者eclipse发布的项目时配置文件不更新或者无配置文件

    myeclipse或者eclipse发布的项目时配置文件不更新或者无配置文件. 正常的web项目有目录 src/main/resources 和 src/main/java 这两个目录默认在编译发布时 ...

  6. Windows + Ubuntu下JDK与adb/android环境变量配置完整教程

    假设JDK和android sdk路径分别如下: D:\Program Files\Java\jdkD:\android-sdk 1.JDK环境变量配置JAVA_HOME=D:\Program Fil ...

  7. 导入eclipse工程到Android Studio中

    ref:从 Eclipse 迁移至 Android Studio | Android Studiohttps://developer.android.com/studio/intro/migrate. ...

  8. NIN (Network In Network)

    Network In Network 论文Network In Network(Min Lin, ICLR2014). 传统CNN使用的线性滤波器是一种广义线性模型(Generalized linea ...

  9. HDU 6230

    Palindrome Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tota ...

  10. VS生成事件执行XCOPY时出现Invalid num of parameters的解决方案

    最近想偷懒 想把项目生成的dll全部自动汇集到一个文件夹下 于是乎就动用了VS的生成后事件 在执行Xcopy的时候碰到了点问题 Invalid number of parameters 挺奇怪的,在公 ...