MST
星途 面试题库

面试题:复杂Bash脚本的合规性检查与优化

有一个Bash脚本用于自动化部署Web应用。脚本会拉取代码仓库、安装依赖、配置服务器等操作。为确保合规性,要求脚本在每次执行关键操作(如修改系统配置文件)前进行备份,且备份文件需包含操作时间戳和操作人信息(假设操作人信息可从环境变量$OPERATOR获取)。同时,脚本执行过程中要记录详细日志,日志格式需满足一定规范(时间 - 操作 - 结果)。请描述如何对现有脚本进行修改以满足这些合规性要求,并给出关键代码片段。
10.9万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

修改思路

  1. 备份操作:在执行关键操作(如修改系统配置文件)前,使用cp命令复制文件,并在备份文件名中添加时间戳和操作人信息。
  2. 日志记录:使用echo命令按照指定格式将操作信息输出到日志文件中。

关键代码片段

  1. 备份函数
backup_file() {
    local file=$1
    local timestamp=$(date +%Y%m%d%H%M%S)
    local operator=${OPERATOR:-unknown}
    local backup_file="${file}.bak_${timestamp}_${operator}"
    cp $file $backup_file
    echo "$(date) - Backup $file - Success" >> deployment.log
}
  1. 修改关键操作: 假设修改系统配置文件/etc/someconfig.conf
backup_file /etc/someconfig.conf
# 此处添加修改系统配置文件的操作
sed -i 's/old_value/new_value/' /etc/someconfig.conf
echo "$(date) - Modify /etc/someconfig.conf - Success" >> deployment.log
  1. 初始化日志文件: 在脚本开头添加
> deployment.log

这样每次运行脚本,日志文件都会被清空并重新记录。