我有两台计算机。第一个“路由器”有两个IP地址(10.3.0.1
和192.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
,我需要创建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 。
答案 0 :(得分:2)
尝试在crontab中将iptables
更改为/sbin/iptables
(*。cron的默认路径通常不包含/ sbin。
*)或任何type iptables
打印。