shell脚本测试url是否通

本文介绍了一个用于检测SpringBoot项目是否成功启动的Shell脚本。通过curl命令访问指定URL并检查HTTP状态码,脚本将循环检测直至项目启动成功或达到超时时间。

最近在写双机部署的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不能为空!!!"
  echo
  exit -1
else
  echo "待检测的url="$url
  echo
fi

if [ ! $success_code ]; then
  echo "第2个参数成功状态码不能为空!!!"
  echo
  exit -1
else
  echo "检测成功的状态码success_code="${$success_code}
  echo
fi

# 通过while循环不断检测:-lt 小于,-a 逻辑与(and)  
while [ ${cnt_seconds} -lt ${max_seconds} -a ${result_flag} -eq 0 ]
do
    echo "check ${url} ..."
    # 执行curl返回http状态码 
	http_status_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${url}`
	echo
	echo http status code = ${http_status_code}
    echo 
    # -ne表示不等于
	if [ ${http_status_code} -ne ${success_code} ]
	then
		result_flag=0
		echo ${url} 访问失败, ${sleep_seconds}秒后进行下一次尝试, cnt_seconds=${cnt_seconds}
		sleep ${sleep_seconds}
		cnt_seconds=$[${cnt_seconds}+${sleep_seconds}];
	else
		result_flag=1
		echo  ${url} 访问成功, cnt_seconds=${cnt_seconds}
	fi
	echo
	echo
done

if [ ${result_flag} -eq 0 ] 
then 
  echo ${url} 访问检测失败: ${max_seconds}秒之内未访问成功!!!
  echo
  echo
  exit -1
fi 
echo  ${url} 访问检测成功
echo 
echo

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

./check-url.sh  localhost:8080/test  200
Shell脚本测试环境的部署方法可从不同方面来实现。 对于自动化部署C++应用程序的测试环境,可创建一个完整的自动化脚本,涵盖从代码库到构建C++软件的全流程。以下是示例脚本: ```bash #!/bin/bash # 自动化部署C++应用程序的脚本 # 设置脚本在遇到错误时停止执行 set -e # 定义代码仓库位置和部署目录 REPO_URL="https://your-repository-url.git" CLONE_DIR="/path/to/clone/directory" BUILD_DIR="/path/to/build/directory" # 克隆代码库 git_clone() { echo "克隆代码库..." git clone $REPO_URL $CLONE_DIR } # 编译C++程序 build_cpp() { echo "编译C++程序..." cd $CLONE_DIR # 如果需要,配置环境变量或运行配置脚本 # 比如: source /path/to/environment/setup/script # 创建构建目录并进入 mkdir -p $BUILD_DIR cd $BUILD_DIR # 运行CMake和make来构建项目 cmake $CLONE_DIR make } # 测试程序 test_cpp() { echo "运行测试..." # 这里应该运行您的测试套件,例如: # ./run_tests } # 打包程序 package_cpp() { echo "打包程序..." # 根据需要将构建的二进制文件和相关资源打包 # 例如:tar -czvf app.tar.gz ./app } # 主执行流程 main() { git_clone build_cpp test_cpp package_cpp echo "部署完成." } # 执行主函数 main ``` 此脚本过`git_clone`函数克隆代码库,`build_cpp`函数编译C++程序,`test_cpp`函数运行测试,`package_cpp`函数打包程序,最后在`main`函数中依次调用这些函数完成部署流程 [^1]。 另外,在部署测试环境时可能涉及环境变量的修改。进入文件后,单击`[i]`开始修改,修改完成后保存退出(`ESC---冒号---wq`),执行命令`[source ./.bash_profile]`使修改生效,可利用命令`[echo $ORACLE_BASE]`或`[echo $PATH]`查看设置内容 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值