#!/bin/bash
# 域名列表
domains=("www.qq.com" "www.qq.com.cn" "www.ww.cn")
#查询/etc/nginx/conf.d/*.conf配置文件中的域名,并去重,sh不支持数组,如果用这种方式 需要bash环境运行
#domains=($(grep -hroP 'server_name\s+\K\S+' /etc/nginx/conf.d/*.conf | tr -d ';' | sort -u))
# 企业微信群聊机器人的 Webhook 地址
webhook_url="https://123/123"
# 循环遍历域名列表
for domain in "${domains[@]}"; do
echo "$domain"
# 查询域名的证书有效期
expiration_date=$(openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d "=" -f 2)
echo "Certificate expiration for $domain: $expiration_date"
# 将日期转换为时间戳
expiration_timestamp=$(date -d "$expiration_date" +%s)
# 当前时间戳
current_timestamp=$(date +%s)
# 计算剩余天数
remaining_days=$(( (expiration_timestamp - current_timestamp) / 86400 ))
# 如果剩余天数小于等于10天,则发送警告消息到企业微信群聊机器人
if [ $remaining_days -le 10 ]; then
subject="SSL Certificate Expiration Warning - $domai
#命令备忘
#当前目录下,文件和文件夹按大小排序并显示大小
du -sh * | sort -hr
#显示当前目录下所有文件夹的大小
du --max-depth=1 -h
#查看一个进程的父进程
lsof -p <PID>
pstree -p <PID>
pstree -p | grep "<PID>"
#系统日志指定大小和保留时间
journalctl --vacuum-time=2d
journalctl --vacuum-size=500M
#npm源
npm install --registry=https://registry.npm.taobao.org
npm install --registry=https://registry.npmmirror.com
npm install --registry=https://mirrors.cloud.tencent.com/npm/
#phpinfo
<?php
phpinfo();
?>
#docker打tag并推送至远程仓库 harbor.net替换为仓库地址
docker build --tag imagename:v$BUILD_ID .
docker tag imagename:v$BUILD_ID harbor.net/imagename:v$BUILD_ID
docker push harbor.net/imagename:v$BUILD_ID
#!/bin/sh
#关闭SeLinux
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#安装gcc gcc-c++等基础组件
tar zxvf package.tar.gz
cd package
rpm -Uvh *.rpm --nodeps --force
cd ../
#安装apache
#安装apr
tar zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/usr/local/apr
make && make install
cd ../
#安装apr-util
tar zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
cd ../
#安装pcre
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
./configure --prefix=/usr/local/pcre
make && make install
cd ../
#安装httpd
tar zxvf httpd-2.4.48.tar.gz
cd httpd-2.4.48
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr -with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make && make install
cd ../
#设置开机自启动
cp -r /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
sed -i '1 i\#description:Start and stop the Apache HTTP Server' /etc
#!/bin/bash
# 创建日志文件目录
log_dir="/data/update_logs"
#mkdir -p "$log_dir"
# 日志文件路径,按日切割
log_file="$log_dir/update_$(date +%Y%m%d).log"
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# 获取后端镜像仓库中最新的版本号(去掉前缀"v")
v1=$(curl -u user:passwd -X GET "https://harbor.test.com.cn/api/v2.0/projects/children/repositories/tx-svc-wxchat-online/artifacts" | jq -r 'sort_by(.push_time) | .[-1].tags[0].name' | sed 's/v//')
# 获取当前正在运行的后端容器的版本号
v2=$(docker inspect --format='{{ index .Config.Image }}' tx-svc-wxchat-online | awk -F':' '{print $NF}' | cut -c2-)
# 检查后端是否需要更新
if [ "$v1" -gt "$v2" ]; then
echo "$current_time 需要更新,后端最新版本号:$v1" >> "$log_file"
# 执行后端更新操作
ansible-playbook /data/update_server.yaml --extra-vars "tag=$v1" >> "$log_file" 2>&1
# 发送企业微信消息
webhook_url="https://123/123"
message="后端镜像更新成功,新版本:$v1"
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}"