Crontab 作业将转换数据写入日志文件

Crontab job than writes transition data to log file

我有两台电脑。首先 "Router" 有两个 ip 地址(10.3.0.1192.168.1.105)正在寻找互联网和子网 10.3.0.0/28 并有 net.ipv4.ip_forward=1。我还向 iptables 添加了规则以允许从 10.3.0.0/24 转发。第二个 "User" 有一个 ip 10.3.0.14 和 def 路由 10.3.0.1 我需要创建 cron 作业,它将每小时写入一个日志文件 /var/log/net-usage/10.3.0.14.log 过渡数据(上传和下载)的数量。我需要使用 rsyslog(结合 loger)、cron 和 iptables。日志格式必须像 12 月 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" " "  ";"}')
download=$(iptables -vnL | sed -n 12p | awk '{print "DOWNLOAD" " " }')
echo $date $upload $download >> /var/log/net-usage/10.3.0.14.log

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

Ju20 15 08:05:12 上传 1446K;下载 25M

但是当试图将它添加到 cron 时。 crontab -e

0 * * * * /path_to_script/script.sh

我只有

7 月 20 日 05:00:01

我的 10.3.0.14.log 文件中没有 upload/download 统计信息。

第二期。我需要使用 rsyslog(如果需要,还有记录器)将文件 10.3.0.14.log 从路由器复制到用户机器。并把它放到/var/log/net-usage.log.

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

*) 或任何 type iptables 打印。