Crontab作业比将过渡数据写入日志文件

时间:2019-07-20 10:54:21

标签: bash logging networking cron rsyslog

我有两台计算机。第一个“路由器”有两个IP地址(10.3.0.1192.168.1.105)正在寻找Internet和子网10.3.0.0/28,并拥有net.ipv4.ip_forward=1。我还向iptables添加了规则,以允许从10.3.0.0/24转发。第二个“用户”有一个IP 10.3.0.14和def路由10.3.0.1 enter image description here,我需要创建cron作业,该作业将每小时写入一次日志文件 / var / log / net-usage /10.3.0.14.log 转换数据的数量(上传和下载)。我需要使用rsyslog(与loger结合使用),cron和iptables。日志格式必须像 Dec 31 08:23:06上传:171K;下载:8799K

我试图使用iptables -vnL的过渡信息来解决它

我写了简单的bash代码 script.sh 并使其可执行

#!/bin/bash
date=$(date '+ %h %d  %H:%M:%S')
upload=$(iptables -vnL |sed -n 11p| awk '{print"UPLOAD" " " $2 ";"}')
download=$(iptables -vnL | sed -n 12p | awk '{print "DOWNLOAD" " " $2}')
echo $date $upload $download >> /var/log/net-usage/10.3.0.14.log

我有两个问题。首先,当我从终端 ./ script.sh 运行此脚本时,我得到了想要的

Ju20 15 08:05:12上传1446K;下载2500万

但是当尝试将其添加到cron时。 crontab -e

0 * * * * /path_to_script/script.sh

我只有

7月20日05:00:01

在我的10.3.0.14.log文件中没有上载/下载统计信息。

第二个问题。我需要使用rsyslog(和记录器,如果需要)将文件10.3.0.14.log从路由器复制到用户计算机。并将其放在 /var/log/net-usage.log

1 个答案:

答案 0 :(得分:2)

尝试在crontab中将iptables更改为/sbin/iptables(*。cron的默认路径通常不包含/ sbin。

*)或​​任何type iptables打印。