【问题标题】:Crontab job than writes transition data to log fileCrontab 作业比将转换数据写入日志文件
【发布时间】:2019-11-29 03:11:28
【问题描述】:

我有两台电脑。第一个“路由器”有两个 IP 地址(10.3.0.1192.168.1.105)正在寻找互联网和子网 10.3.0.0/28 并有 net.ipv4.ip_forward=1。我还向 iptables 添加了规则以允许从 10.3.0.0/24 转发。第二个“用户”有一个 ip 10.3.0.14 和 def route 10.3.0.1 我需要创建 cron 作业,它将每小时写入日志文件 /var/log/net-usage/10.3.0.14.log 过渡数据的数量(上传和下载)。我需要使用 rsyslog(结合记录器)、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" " " $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;下载 25M

但是当试图将它添加到 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

【问题讨论】:

  • 尝试将 iptables 更改为 /sbin/iptables(* 在 crontab 中。cron 的默认路径通常不包含 sbin。*) 或 type iptables 打印的任何内容。
  • 或者,在该用户的 crontab 顶部附近,添加一行 PATH=/sbin:/bin:/usr/bin
  • 回答第二个问题,我推荐你tecmint.com/…。除此之外,您当然可以只使用scp 复制静态文件。
  • 谢谢。我修改了我的脚本(/sbin/iptables),现在 cron 可以正确理解它。第一个问题已关闭。
  • no scp 不是我的答案。我需要 rsyslog 和记录器。

标签: bash logging networking cron rsyslog


【解决方案1】:

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

*) 或 type iptables 打印的任何内容。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2015-06-20
    • 2023-01-14
    • 2015-07-02
    • 2012-04-06
    • 2023-03-31
    • 2018-08-12
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多