编写Shell脚本基于User/Domain数据批量生成robots.txt追加命令
Shell脚本实现方案
前置准备
把你存储用户和域名映射关系的内容单独存为配置文件,命名为user_domain_map.conf即可,文件里的分段空行、等号前后的空格都不会影响解析,不需要特意调整原有格式。
完整脚本
把下面的代码保存为gen_robots_sitemap.sh:
#!/bin/bash # 指向存储映射关系的配置文件路径 MAP_FILE="./user_domain_map.conf" # 临时变量存储当前段落读到的用户名和域名 current_user="" current_domain="" # 逐行读取配置内容 while IFS= read -r line || [[ -n "$line" ]]; do # 空行直接跳过 [[ -z "$(echo "$line" | xargs)" ]] && continue # 匹配到User字段时截出用户名,自动去除前后空格 if [[ "$line" =~ ^User= ]]; then current_user=$(echo "${line#*=}" | xargs) # 匹配到Domains字段时截出域名,自动去除前后空格 elif [[ "$line" =~ ^Domains= ]]; then current_domain=$(echo "${line#*=}" | xargs) fi # 同一段落的用户名和域名都读取完成后,生成对应命令 if [[ -n "$current_user" && -n "$current_domain" ]]; then echo "echo 'Sitemap: https://${current_domain}/sitemap.xml' | tee -a /home/${current_user}/public_html/robots.txt >/dev/null" # 重置临时变量,准备读取下一段配置 current_user="" current_domain="" fi done < "$MAP_FILE"
使用步骤
- 给脚本添加执行权限,运行命令:
chmod +x gen_robots_sitemap.sh - 先预览生成结果:直接执行
./gen_robots_sitemap.sh,终端会输出所有拼接完成的命令,先核对用户名、域名配对是否正确 - 确认无误后批量执行:直接运行
./gen_robots_sitemap.sh | bash,就会自动给所有对应用户站点的public_html/robots.txt追加Sitemap配置
注意:你给出的期望输出示例中存在几处用户名和域名错位配对的问题,上述脚本严格按照配置文件同一段落内的User、Domains字段做一一对应,不会出现串配错误。
内容的提问来源于stack exchange,提问作者Bum kailash kumar
相关产品推荐
相关产品推荐

