You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何每小时自动获取ips.txt文件中的新增数据并执行Bash操作?

实现每小时获取ips.txt的新增IP并处理的方法

核心思路是通过记录文件读取的偏移量,每次仅读取上次读取位置之后的新增内容,具体步骤如下:

1. 编写处理脚本

创建一个名为process_new_ips.sh的脚本,内容如下:

#!/bin/bash

# 定义目标文件和偏移量记录文件的路径
IP_FILE="ips.txt"
OFFSET_FILE="ips.offset"

# 初始化偏移量文件(如果不存在则设为0)
if [ ! -f "$OFFSET_FILE" ]; then
    echo 0 > "$OFFSET_FILE"
fi

# 读取上次记录的偏移量
LAST_OFFSET=$(cat "$OFFSET_FILE")

# 获取当前ips.txt的文件大小
CURRENT_SIZE=$(stat -c %s "$IP_FILE")

# 检查是否有新增内容
if [ "$CURRENT_SIZE" -gt "$LAST_OFFSET" ]; then
    # 读取从上次偏移量之后的所有新增内容
    tail -c +$((LAST_OFFSET + 1)) "$IP_FILE" | while read -r IP_LINE; do
        # 这里替换为你需要执行的Bash操作,示例为打印IP
        # 注意:如果shodan输出的每行是单个IP,直接处理即可;如果有其他内容,需先提取IP
        echo "处理新增IP: $IP_LINE"
        # 示例操作:比如将IP存入另一个文件、执行端口扫描等
        # echo "$IP_LINE" >> processed_ips.txt
        # nmap -Pn "$IP_LINE"
    done

    # 更新偏移量为当前文件大小,下次从这里开始读取
    echo "$CURRENT_SIZE" > "$OFFSET_FILE"
fi

2. 赋予脚本执行权限

在终端中运行以下命令:

chmod +x process_new_ips.sh

3. 设置定时任务(每小时执行一次)

通过crontab配置定时任务:

  1. 打开crontab编辑界面:
crontab -e
  1. 在文件末尾添加一行(替换为脚本的实际路径):
0 * * * * /home/your_user/process_new_ips.sh
  1. 保存并退出,crontab会自动生效,每小时整点执行一次脚本。

关键说明

  • 偏移量文件ips.offset会记录每次读取到的文件大小,确保每次只处理新增的内容
  • 脚本中的tail -c +$((LAST_OFFSET + 1))用于从指定字节位置开始读取文件内容,适配文件追加的场景
  • 如果shodan输出的内容包含非IP信息,需要在while read循环中先提取IP(比如用grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'过滤)

内容的提问来源于stack exchange,提问作者ELMO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:32:37