最近在写双机部署的shell脚本,
需要通过测试指定的url来确定项目(springboot)是否启动成功,

  1. 通过curl命令来访问指定的url
    curl -I -m 10 -o /dev/null -s -w %{http_code} http://localhost:8080/test
    curl参数说明:
    -I --head 仅返回头部信息,使用HEAD请求
    -m 10 最多查询10s
    -o /dev/null 屏蔽原有输出信息
    -s silent 模式,减少输出的信息,比如进度
    -w 控制额外输出,"%{http_code}"表示输出http状态码

  2. 由于系统启动需要一定的时间,因此需要while循环不断测试直到访问成功或者超时为止。

check-url.sh脚本如下

#!/bin/bash
#检测的url,从第一个参数中获取
url=$1
#认为检测成功的http状态码,从第二个参数中获取  
success_code=$2
#最大秒数(即超时时间)
max_seconds=180
#当前秒数
cnt_seconds=0
#休息间隔秒数
sleep_seconds=5
#结果标记
result_flag=0
if [ ! $url ]; then
  echo "第1个参数url不能为空!!!"
  exit -1
  echo "待检测的url="$url
if [ ! $success_code ]; then
  echo "第2个参数成功状态码不能为空!!!"
  exit -1
  echo "检测成功的状态码success_code="${$success_code}
# 通过while循环不断检测:-lt 小于,-a 逻辑与(and)  
while [ ${cnt_seconds} -lt ${max_seconds} -a ${result_flag} -eq 0 ]
    echo "check ${url} ..."
    # 执行curl返回http状态码 
	http_status_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${url}`
	echo http status code = ${http_status_code}
    # -ne表示不等于
	if [ ${http_status_code} -ne ${success_code} ]
		result_flag=0
		echo ${url} 访问失败, ${sleep_seconds}秒后进行下一次尝试, cnt_seconds=${cnt_seconds}
		sleep ${sleep_seconds}
		cnt_seconds=$[${cnt_seconds}+${sleep_seconds}];
		result_flag=1
		echo  ${url} 访问成功, cnt_seconds=${cnt_seconds}
if [ ${result_flag} -eq 0 ] 
  echo ${url} 访问检测失败: ${max_seconds}秒之内未访问成功!!!
  exit -1
echo  ${url} 访问检测成功

使用方式
两个参数:
参数1,待测试的url
参数2,认为成功的http状态码

./check-url.sh  localhost:8080/test  200
                                    假设你想测试网页和一些CGI,而你又不想麻烦Apache安装完整的包。这个快速的shell脚本可能只是你所需要的东西。
简而言之,一个web服务器是一个应用程序,该应用程序将本地文本文件过网络发送给客户的请求。如果你让另一个程序(例如inetd)处理网络情况下,web服务器可以减少到只有 cat “文件名”发送到stdout。当然,困难将提取部分文件名的HTTP请求字符串:任何一个Bash脚本无法轻易做到。
我们的脚本应该像其他任何脚本一样,加上一些定义:
 代码如下:
#!/bin/bash
base=/var/www
inetd将从远程主机接收到的数据传递给我们的脚本,第一行是标准
                                    ljohn_ops
常用的脚本集合
集合中包含各种服务的创建,性能测试,日常巡检等;脚本大部分是自己工作中编写使用(经过严格测试),还包含一些运维大鸟写的脚本修改而来。
脚本列表
最后更新时间
docker
docker
configure_ssh_without_pass 免秘钥处理
2018.04.26
win_bash
win批处理oracle备份脚本
2018.03.26
logrotate
日志切割,nginx,php等模板,nohup_split 等脚本
2018.02.24
zabbix
redis 监控
2018.02.01
backup
文件目录备份,日志备份
2018.01.09
mysql
mysql备份及重设root用户密码,innobackupex_scripts
2018.02.24
chk_url
网站url 检查脚本
2017.12.
                                    最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱.
这里赞一下OS X自带有crontab计划任务,可以直接在本机测试脚本啦^_^
# vi check_web_alive.sh
 代码如下:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# define url
WEB_URL=(“http://www.example.com” “http://ww
点安装-r require.txt
步骤4:在settings.py中插入Shell脚本名称和绝对路径
示例:“ test”:“ / var / www / html / parser / test.sh”
 这里的“测试”是我们定义的名字,它的绝对路径是'/var/www/html/parser/test.sh'[您可以过pwd检查]
步骤5:运行项目
python app.py
步骤6:传递参数
 settings.py中的脚本]&args = [arg1,arg2]
 在这里,我们执行了test.py,它的路径是'/var/www/html/parser/test.py'
将Shell脚本安装为系统应用程序,安装依赖项,并从您自己的存储库中安装。
 用于从远程索引(您自己!)快速部署和更新Shell脚本。
 这是面向知名人士的Alpha质量软件。
 目前,它非常适合我的需求,但是如果您发现有用的话,可以随时参加或发表评论。
 已在debian base,ubuntu,mint,raspbian中经过测试。
 应该可以在Mac OS上打一些补丁(使用.bash_profiles而不是.bashrc,请报告)。
 Usage: phi [list[install|local|update] [url|path]
-------------
                                    I am running a cURL command in Linux that is returning 200.curl -sL -w "%{http_code}" "http://google.com" -o /dev/nullHowever, If I run the same as below, I get "Fail" as output:if [ "curl -sL -w "%{h...
                                    获取到指定的pod name
viewer=kubectl -n skiff-nsfdemo-$ns get pod  | grep viewer | awk '{print $1}'
根据pod name 获取指定pod IP
viewerIp=kubectl -n skiff-nsfdemo-$ns get pod  -o wide | grep viewer | awk '{print $6}'
curl命令返回的参数判断请求是否成功
curl -I -s --connect-timeo
                                    转载请注明出处。需求:虽然jenkins上构建后可以触发远程执行脚本进行部署,但是现在不希望每次构建的时候都去部署,所以将这块部署的脚本独立出来。希望在服务器上直接执行脚本调用jenkins进行构建然后部署。jenkins是何物,大家需要另寻资料进行阅读了解,此处不做介绍。此处只说明在服务器上如何写shell脚本触发jenkings构建并判断是否构建成功。#!/bin/shjenkins_path...
                                    文件urls.list 保存一些url,格式如下:然后判断脚本如下:#!/bin/shfor name_urls in `cat urls.list|grep -v "#"`doname=`echo $name_urls|awk -F: '{print $1}'`urls=`echo $name_urls|awk -F: '{print $2“:”$3}'`#echo 1$name_urls#ec...
                                    最近在做CI/CD,其中就不乏编写脚本,在进行新版本发布后,需要重新启动程序,这里需要等待程序启动成功后,再进行测试脚本的执行。在Linux系统下直接使用 curl 命令调用http,非常方便。在windows下,我安装了curl,进行尝试,直接在cmd窗口中调用,命令输出为我期待的结果,但是写入bat中捕获不了输出结果,所以最后windows下采用的自己编写java程序进行判断的方式。
linu...
                                    #定义函数check_http: 
#使用curl命令检查http服务器的状态 #-m设置curl不管访问成功或失败,最大消耗的时间为5秒,5秒连接服务为相应则视为无法连接
#-s设置静默连接,不显示连接时的连接速度、时间消耗等信息 
#-o将curl下载的页面内容导出到/dev/null(默认会在屏幕显示页面内容) 
#-w设置curl命令需要显示的内容%{http_code},指定cu...