前言

相信大家应该都有所体会,shell脚本可以说作用非常大,在服务器领域,用shell操作事务可比手动点击要方便快捷得多了。虽然只是文字界面,但是其强大的处理功能,会让各种操作超乎想象。而且,也可以将这些习惯移植到日常的工作当中,提升办事效率。
其实shell语法很简单,基本上就是综合一下在命令行下,一个个的命令集合,然后就组成了shell脚本。当然了,不懂语法的,百度搜索一下就好了嘛,毕竟,重要的是思想而非语法。
最近,刚接一需求,如下:
DBA会将一些服务规则的数据导出,然后一条条手动去curl某应用接口,从而完成相应的业务要求。
那么问题来了,DBA导出的数据是格式化的,要curl的接口也是格式化的,需要的,只是将相应的数据替换成对应的值即可。注意,不保证所有的命令都能执行成功,有可能需要重新跑接口。
很明显,手动一条条地去写curl命令,然后一条条执行,然后观察结果,做出判断,这对于少数几个数据来说,是可行的。但是假设,数据有几百条、几千条几万条呢,那就不可能人工一条条去搞了吧。因此,shell脚本就该出场了(当然了,有同学说,我用其他语言也可以啊,甚至说我这个功能写到代码里就可以了,然而这些特殊无意义的代码,是不需要长期保留下来的)。
该shell脚本只要做好三件事就行了:
1. 读取源数据文件的内容,替换接口的数据格式;
2. 执行命令,完成业务操作;
3. 记录完整的日志,以便后期排查对比;
需求很简单,不懂语法没关系,查一下嘛。参考代码如下:
#!/bin/bash
log_file='result.log'
param_file=$1 # 源数据在命令行中指定
log_cmd="tee -a $log_file"
i=1
for line in `cat $param_file`;
do
echo "read line" $i ":" $line | tee -a $log_file
let "i=$i+1"
OLD_IFS=$IFS;IFS=",";
arr=($line) # 分割数据到数组
IFS=$OLD_IFS;
curl_cmd="curl -d 'uId=${arr[0]}&bid=${arr[1]}&bA=${arr[2]}&to=6&bP=30&fddays=5' http://localhost:8080/mi/api/ss/1.0.1/co/apply"
echo `date "+%Y-%m-%d %H:%M:%S"` "start ===>> " $curl_cmd | tee -a $log_file
eval "$curl_cmd 2>&1" | tee -a $log_file # 使用 eval 命令,把错误日志和接口返回结果一并带回,到后续console及日志存储
echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_file
done
echo `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file
源数据格式参考如下:
234,201708222394083443,5000 4211,201782937493274932,3000 23,201749379583475934,2000
当读取的文件格式为空格分隔的文件时,该读取将发生异常,换成另一种方式读取行:
#!/bin/bash
log_file='result.log'
param_file=$1
log_cmd="tee -a $log_file"
i=1
while read line;
do
echo "read line" $i ":" $line | tee -a $log_file
let "i=$i+1"
arr=($line)
curl_cmd="curl -d 'uId=${arr[0]}&bid=${arr[1]}&bt=${arr[2]}&toBorrowType=6&borrowPeriod=30&fddays=5' http://localhost/mi/c/1.0.1/c/n"
echo `date "+%Y-%m-%d %H:%M:%S"` "start ===>> " $curl_cmd | tee -a $log_file
#`$curl_cmd` 2>&1 $log_file | tee -a $log_file
eval "$curl_cmd 2>&1" | tee -a $log_file
echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_file
done < $param_file
echo `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file
这里有个技巧,即使用tee命令,既在console上显示了访问日志,也往文件里写入了记录。即有人工观察,也有日志存储,以备查看。
如此,便实现了大家都不用手动敲数据,从而在这上面犯错的可能了。 DBA从数据导出格式化数据,shell脚本直接读取格式化数据,保留记录。这才是程序该干的事。
一句话,想办法偷个懒,这是我们该干的事。
但是应该要注意,当一个接口被脚本跑去执行时,你就行考虑并发问题,以服务器的压问题了,也不要太相信代码。做最坏的打算。
curl的命令请参考:https://curl.haxx.se/docs/manpage.html (你可以搜简要中文描述,当然)
总结
从前觉得1、2G的日志文件处理是个头疼的问题,后来发现 grep, awk, sed, less, salt 等工具组合起来,能让你从几十G甚至更多的千军万马文件中,直取要害。这便是linux的厉害之处。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# shell
# curl
# 调用接口
# shell脚本
# 批量请求
# shell中如何批量注释和取消注释
# shell脚本实现统计文件大小、批量创建用户的示例
# shell脚本批量复制及执行命令的示例详解
# 使用Shell脚本批量启停Docker服务
# shell脚本实现ssh-copy-id批量自动发送公钥到远程主机
# shell脚本批量删除es索引的方法
# 详解Shell 命令行批量处理图片文件名的实例
# 如何使用shell在多服务器上批量操作
# 不懂
# 很简单
# 命令行
# 的是
# 干的事
# 这是
# 数据格式
# 几个
# 是个
# 来了
# 也有
# 让你
# 不可能
# 有个
# 你可以
# 那就
# 大家都
# 有可能
# 在这
# 不需要
相关文章:
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在IIS中新建站点并配置端口与IP地址?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
公司网站的制作公司,企业网站制作基本流程有哪些?
制作网站的基本流程,设计网站的软件是什么?
深圳网站制作案例,网页的相关名词有哪些?
公司网站设计制作厂家,怎么创建自己的一个网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星CMS五站合一模板配置与SEO优化指南
,网站推广常用方法?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过多用户协作模板快速搭建高效企业网站?
行程制作网站有哪些,第三方机票电子行程单怎么开?
无锡营销型网站制作公司,无锡网选车牌流程?
如何快速生成高效建站系统源代码?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
建站之星安装提示数据库无法连接如何解决?
如何有效防御Web建站篡改攻击?
高防服务器租用指南:配置选择与快速部署攻略
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星安装失败:服务器环境不兼容?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何访问已购建站主机并解决登录问题?
如何获取开源自助建站系统免费下载链接?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过老薛主机一键快速建站?
定制建站流程解析:需求评估与SEO优化功能开发指南
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
电商平台网站制作流程,电商网站如何制作?
Python多线程使用规范_线程安全解析【教程】
盘锦网站制作公司,盘锦大洼有多少5G网站?
贸易公司网站制作流程,出口贸易网站设计怎么做?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
济南专业网站制作公司,济南信息工程学校怎么样?
如何快速使用云服务器搭建个人网站?
宁波自助建站系统如何快速打造专业企业网站?
建设网站制作价格,怎样建立自己的公司网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何确认建站备案号应放置的具体位置?
七夕网站制作视频,七夕大促活动怎么报名?
常州自助建站费用包含哪些项目?
ui设计制作网站有哪些,手机UI设计网址吗?
教学网站制作软件,学习*后期制作的网站有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。