我想请问大家一下,如何加快处理脚本文件的速度,脚本代码如下,感激!
insert_nat(){
echo $1 $2
v=""
sed 's/DF//g'
for((i=1; i<=$2; ++i))
do
((row=$i+$1))
values=($(awk -F '[= ]' 'NR=='$row' {print $3, $12, $14, $16, $26, $28, $30}' /var/log/natLog-$YESTERDAY))
src_ip=${values[1]}
dst_ip=${values[2]}
len=${values[3]}
proto=${values[4]}
src_port=${values[5]}
dst_port=${values[6]}
record_time=$(date -d "YESTERDAY ${values[0]}" +%s)
v="(inet_aton("\"$src_ip\""),
cast("\"$src_port\"" as signed),
inet_aton("\"$dst_ip\""),
cast("\"$dst_port\"" as signed),
"\"$proto\"",
cast("\"$len\"" as signed),
cast("\"$record_time\"" as unsigned)), "${v}
done
mysql -u$DBUSER -p$DBPASSWD tzw -e "insert into tzw_nat_log(src_ip, src_port, dst_ip, dst_port, proto, len, record_time)
values${v%,*}"
}
insert_nat(){
echo $1 $2
v=""
sed 's/DF//g'
for((i=1; i<=$2; ++i))
do
((row=$i+$1))
values=($(awk -F '[= ]' 'NR=='$row' {print $3, $12, $14, $16, $26, $28, $30}' /var/log/natLog-$YESTERDAY))
src_ip=${values[1]}
dst_ip=${values[2]}
len=${values[3]}
proto=${values[4]}
src_port=${values[5]}
dst_port=${values[6]}
record_time=$(date -d "YESTERDAY ${values[0]}" +%s)
v="(inet_aton("\"$src_ip\""),
cast("\"$src_port\"" as signed),
inet_aton("\"$dst_ip\""),
cast("\"$dst_port\"" as signed),
"\"$proto\"",
cast("\"$len\"" as signed),
cast("\"$record_time\"" as unsigned)), "${v}
done
mysql -u$DBUSER -p$DBPASSWD tzw -e "insert into tzw_nat_log(src_ip, src_port, dst_ip, dst_port, proto, len, record_time)
values${v%,*}"
}
解决方案 »
- 启动Ubuntu时出错
- 为什么监听端口会有两个
- 入门嵌入式Linux,直接学习A9还是以ARM9开始呢?
- 请问已经安装了虚拟机LINUX ,最后一步提示要卸载虚拟光驱,重新启动才能使用,问题是:怎么卸载虚拟光驱,我在卸载/更新处没有找到它的虚拟光驱
- haproxy与防火墙、服务器等网络设备的布署配置问题?
- python
- 手动执行重启脚本成功,crontab不能执行
- pstree | grep -n 这个命令为什么报错?
- keepalived的虚拟ip,我的阿里云域名怎么解析到这个虚拟ip上面
- ubantu误删文件,系统进不去。
- docker容器启动时,总是报以下错误,有谁知道为什么吗?
- 程序中执行系统命令
应该先生成sql文件,最后用mysql命令一次执行。
您好,感谢您的回答,我试过将插入数据库的语句注释掉,速度几乎不变。应该是awk取日志字段的时候慢,这个能再优化嘛