我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell批量curl接口脚本的简单实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell批量curl接口脚本的简单实现方法

前言

相信大家应该都有所体会,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的厉害之处。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell批量curl接口脚本的简单实现方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell批量curl接口脚本的简单实现方法

前言 相信大家应该都有所体会,shell脚本可以说作用非常大,在服务器领域,用shell操作事务可比手动点击要方便快捷得多了。虽然只是文字界面,但是其强大的处理功能,会让各种操作超乎想象。而且,也可以将这些习惯移植到日常的工作当中,提升办事
2022-06-04

Shell脚本之文件批量创建与修改的简单方法

一、脚本要求1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip,文件名除了_hcip固定字符串外,文件名还包含8个小写随机的字符。 3.创建的12个文件后缀名改为大写的PY,固定字符串改为_h
2022-06-04

hive-shell批量命令执行脚本的实现方法

如下所示:#!/usr/bin/bash HADOOP_HOME="/opt/module/cdh-5.3.6-ha/hadoop-2.5.0-cdh5.3.6" HIVE_HOME='/opt/module/cdh-5.3.6-ha/hi
2022-06-04

Shell脚本批量重命名文件后缀的3种实现方法介绍

本篇内容主要讲解“Shell脚本批量重命名文件后缀的3种实现方法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shell脚本批量重命名文件后缀的3种实现方法介绍”吧!需求:家目录下有一些sq
2023-06-09

shell脚本结合iptables防端口扫描的实现方法

这篇文章主要讲解了“shell脚本结合iptables防端口扫描的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell脚本结合iptables防端口扫描的实现方法”吧!网上有现在
2023-06-09

python脚本实现数据导出excel格式的简单方法(推荐)

实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用Python实现了数据的提取并将其用Excel格式导出。下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出
2022-06-04

linux下采用shell脚本实现批量为指定文件夹下图片添加水印的方法

要实现linux下采用shell脚本批量为指定文件夹下图片添加水印,首先需要安装imagemagick: CentOS上安装:yum install ImageMagick -yDebian上安装:apt-get install Image
2022-06-04

Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法

本文实例讲述了Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法。分享给大家供大家参考,具体如下: 每天打开电脑第一件事应该就是打开人人刷一下,然后登上QQ。每次都这样很麻烦,于是写了一个脚本,每次双击即可自动完成这两个工作。
2022-06-04

编程热搜

目录