Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于网传的shell脚本,进行简单优化

基于网传的shell脚本,进行简单优化

原创
作者头像
用户8639654
修改于 2021-08-12 06:26:12
修改于 2021-08-12 06:26:12
5230
举报
文章被收录于专栏:云计算运维云计算运维

第一题,文本格式化:

请把下面的字符串:

zhangsan

y97JbzPru

lisi

5JhvCls6q

xiaowang

Nnr8qt2Ma

laoma

iqMtvC02y

zhaosi

9fxrb4sJD

改为如下:

zhangsan:y97JbzPru

lisi:5JhvCls6q

xiaowang:Nnr8qt2Ma

laoma:iqMtvC02y

zhaosi:9fxrb4sJD

原参考答案:

#!/bin/bash

#这个脚本用来格式化文本

#作者:****

#日期:2018-12-19

n=`wc -l test3.txt|awk '{print $1}'`

n2=$[$n/2]

for i in `seq 1 $n2`

do

i2=$[$i*2]

j=$[$i2-1]

l1=`sed -n "$i2"p test3.txt`

l2=`sed -n "$j"p test3.txt`

echo $l2:$l1

done

优化后:

[root@localhost ~]# sed 'N;s/\n/:/' test

zhangsan:y97JbzPru

lisi:5JhvCls6q

xiaowang:Nnr8qt2Ma

laoma:iqMtvC02y

zhaosi:9fxrb4sJD

第二题,批量修改文件名:

至少用两种方法,批量把当前目录下面所有文件名后缀为.bak的后缀去掉,比如1.txt.bak去掉后为1.txt

原参考答案:

#!/bin/bash

#这个脚本用来去掉文件名后缀

#作者:***

#日期:2018-12-14

for f in `ls -d ./*.bak `

do

# mv $f `echo $f|sed 's/.bak$//'`

f1=`echo $f|awk -F '.bak$' '{print $1}' `

mv $f $f1

done

优化后:

[root@localhost ~]# ll

总用量 0

-rw-r--r-- 1 root root 0 6月 26 11:29 1.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 2.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 3.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 4.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 5.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 6.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 7.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 8.txt.bak

-rw-r--r-- 1 root root 0 6月 26 11:29 9.txt.bak

[root@localhost ~]# rename .txt.bak .txt *

[root@localhost ~]# ll

总用量 0

-rw-r--r-- 1 root root 0 6月 26 11:29 1.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 2.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 3.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 4.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 5.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 6.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 7.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 8.txt

-rw-r--r-- 1 root root 0 6月 26 11:29 9.txt

第三题,打印数组:

写一个脚本让用户输入多个城市的名字(可以是中文),要求不少于5个,然后把这些城市存到一个数组里,最后用for循环把它们打印出来。

原参考答案:

#!/bin/bash

#这个脚本用来打印城市名字

#作者:***

#日期:2018-12-12

read -p "输入不少于5个城市的名字,用空格分隔开。" name

n=`echo $name|awk '{print NF}'`

if [ $n -lt 5 ]

then

echo "请输入至少5个城市的名字."

exit

fi

city=($name)

for i in `seq 0 $[${#city[@]}-1]`

do

echo ${city[$i]}

done

优化后:

#!/bin/bash

read -p "输入不少于5个城市的名字,用空格分隔开: " -a name

n=`echo $name|awk '{print NF}'`

if [ `echo ${#name[@]}` -lt 5 ]

then

echo "请输入至少5个城市的名字."

exit

fi

for i in `seq 0 $[${#name[@]}-1]`

do

echo ${name[$i]}

done

第四题,判断某网站是否宕机:

写一个shell脚本,通过curl -I 返回的状态码来判定所访问的网站是否正常。 比如,当状态码为200时,才算正常。

原参考答案:

#!/bin/bash

#这个脚本用来判断一个网址是否正常

#作者:*****

#日期:2018-11-01

url="http://www.jd.com"

mail_user=3067986**@qq.com

code=`curl -I $url 2>/tmp/curl.err|head -1|awk '{print $2}'`

if [ -z "$code" ]

then

python mail.py $mail_user "$url访问异常" "`cat /tmp/curl.err`"

exit

elif [ $code != "200" ]

then

curl -I $url &> /tmp/curl.log

python mail.py $mail_user "$url访问异常 状态码$code" "`/tmp/curl.log`"

fi

优化后:

#!/bin/bash

url="http://www.jd.com"

code=`curl -ILs $url |awk '/HTTP/{print $2}'| grep -w "200"`

if [ $? -ne 0 ];then

echo "站点异常!"

#如果想发邮件通知:

#echo "站点:$url 异常,请检查!" | mailx -s "warning" username@163.com

fi

第五题,检查某网站在线的主机:

写一个shell脚本,把192.168.75.0/24网段在线的ip列出来。

原参考答案:

#!/bin/bash

for i in `seq 1 254`

do

if ping -c 2 -W 2 192.168.75.$i >/dev/null 2>/dev/null

then

echo "192.168.75.$i 是通的."

else

echo "192.168.75.$i 不通."

fi

done

优化后:

fping -ag 192.168.75.0/24 2>/dev/null

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
10 个实战与面试【常用 Shell 脚本】编写
5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。
昱良
2019/06/19
4950
Linux Shell常用脚本整理
一些常用的Shell脚本笔记,这是当年在兄弟连学习Linux运维是写过的一些案例,后期在工作中也遇到了一些问题需要使用shell来解决的,这里总结起来方便以后可以直接复用。
王瑞MVP
2022/12/28
1K0
Linux 【Shell脚本经典案例】
===============Talk is cheap, show me the code,bye-bye================
IT茂茂
2020/09/17
3.5K0
Linux 【Shell脚本经典案例】
101个shell脚本
emm。。这个脚本是因为tomcat没有自带的能够给service开机启动的脚本,我就琢磨着自己写了一个简单的启动脚本,如下:
端碗吹水
2020/09/23
1.5K0
101个shell脚本
超牛逼!100 个开箱即用的 Shell 脚本,拿好了~
shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行事。
民工哥
2021/05/11
1.7K0
Linux运维常用shell脚本之系统管理实例
写一个配置文件保存被监控主机SSH连接信息,文件内容格式:主机名 IP User Port
菲宇
2022/12/21
3.2K0
你应该要掌握的34个运维常用Shell脚本!
(15)编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机
入门笔记
2022/06/03
1.9K0
Linux Shell脚本案例
1.Dos攻击防范(自动屏蔽攻击IP) #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptabl
用户7741497
2022/03/01
1.4K0
2018-11-22 10 个实战及面试常用 Shell 脚本编写
注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。
Albert陈凯
2018/12/14
4470
学习笔记0615----shell脚本
每隔1分钟检查一下系统负载,当系统的负载大于10的时候,发一封邮件(监控脚本) 最小单元是任务计划 cron
嘻哈记
2020/11/24
8440
Linux运维常用shell脚本之用户管理实例
实现要求:创建用户student1到student50,指定组为student组!而且每个用户需要设定一个不同的密码!
菲宇
2022/12/02
3.1K0
线上图片批量更换脚本记录
需求说明: 线上之前使用的图片没有经过处理,比较大。应产品同事要求,将图片拿出来处理后再替换之前的图片,图片名不变。 /tmp/image目录下存放的修改后的图片 [root@fangfull_web1 ~]# ls -l /tmp/image|head -10 total 66376 -rw-r--r-- 1 root root 114118 Jan 18 17:26 201407281934401406547280.jpg -rw-r--r-- 1 root root 110450 Jan 18 1
洗尽了浮华
2018/01/23
9650
实用Shell脚本
假设服务器为lnmp环境,近期访问经常出现502现象,且502错误在重启php-fpm服务后消失,因此编写监控脚本,一旦出现502,则自动重启php-
花落花相惜
2021/11/26
1.3K0
Shell大全:可以应用于工作及面试
问题导读 1.Shell该如何学习? 2.Shell和传统编程语言有哪些相同? 3.Shell和传统编程语言有哪些不同? 4.你认为Shell还有哪些便捷的地方? 由于行业的发展,对程序员的要求越来越
用户1410343
2020/02/20
9430
Shell百宝箱(后续会不断更新)
获取随机字符串或数字 随机获取8位字符串 # 方法一 echo $RANDOM |md5sum |cut -c 1-8 d2614e90 # 方法二 openssl rand -base64 4 6kLKvQ== # 方法3 cat /proc/sys/kernel/random/uuid |cut -c 1-8 获取随机8位数字 # 方法1: echo $RANDOM |cksum |cut -c 1-8 62936468 # 方法2: openssl rand -base64 4 |cksum
iginkgo18
2020/09/27
6380
JVM内存监控shell脚本
该shell脚本主要用于监控: 1.各个进程的jvm内存使用情况; 2.端口监控; 3.访问的页面是否正常。 脚本名称:jvm-monitor.sh,具体脚本如下: ---- [root@loong /]#more jvm-monitor.sh #!/bin/bash export JAVA_PATH=/callcent/jdk1.6.0_25 export PATH=$PATH:$JAVA_PATH/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/lo
loong576
2019/09/10
1.9K0
JVM内存监控shell脚本
Shell编程进阶篇(完结)
1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。      它跟其他的循环,如while循环,最大的不同,是它拥有一个循环
惨绿少年
2017/12/27
3.5K0
Shell编程进阶篇(完结)
Shell脚本编程_shell简单脚本
  shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 shell。
全栈程序员站长
2022/11/09
8.5K0
Shell脚本编程_shell简单脚本
Python自动化运维之shell终极指南
第 2 章 核心知识[应用] 2.1 表达式 2.1.1 测试语句 应用场景 判断条件是否成立
海仔
2020/08/22
1.7K0
for循环、while循环、continue、break、exit解析、select用法
如果不手动停止该脚本,它会一直循环执行(按Ctrl+c结束),实际环境中配合screen使用。
阿dai学长
2019/04/03
1.4K0
相关推荐
10 个实战与面试【常用 Shell 脚本】编写
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档