我有一个有效的 bash 脚本,当它们进入时告诉我 nginx 访问日志,将原始日志格式化为丰富多彩的信息。
不幸的是,我不太确定如何获取我已经创建的内容,并添加显示请求的用户代理。我希望能够一目了然地使用了哪个 User-Agent。是谷歌机器人吗?是 Windows 上的 Firefox 22 吗?
这是我拥有的 bash 脚本:
#!/bin/bash
LOG_DEFAULT_PATH="/var/log/nginx/access.log"
LOG_PATH="$1"
if [ "$LOG_PATH" = "" ] && test -f "$LOG_DEFAULT_PATH"; then
echo -e "\033[35mAuto-detected Log File: \033[32m$LOG_DEFAULT_PATH\033[0m"
LOG_PATH="$LOG_DEFAULT_PATH"
fi
if [ "$LOG_PATH" = "" ]; then
echo -e "\033[32mUsage: $0 /path/to/nginx/access_log\033[0m"
else
(tail -n 500 -F $LOG_PATH | awk '{printf "%s%s %s %s%s%s %s %s %s%s%s %s%s\n", "\033[40;1;35m", $5, $6, "\033[0;32m", $1, "\033[37m", $10, substr($7, 2), "\033[31m", $8, "\033[36m", $2, "\033[0m"}')
fi
脚本的主体位于以 tail 命令开头的行中。我正在使用 awk 将请求的不同部分打印到终端中,并为每一部分着色。在这里,我假设还会显示 User-Agent 信息。
这是日志格式:
log_format vhost_combined '$http_host $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
当然,任何关于更好脚本的建议也将不胜感激!