我有一个名为SSH的文件,其中包含两行信息。它看起来像这样:行处理文件,bash
src=192.168.60.111 ttl: 64 last_seen: 4295187854 oldest_pkt: 16 4295157111, 4295168442, 4295172078, 4295172078, 4295172328, 4295172328, 4295172829, 4295172829, 4295173830, 4295173830, 4295175834, 4295175834, 4295179838, 4295179838, 4295187854, 4295187854
src=10.0.98.2 ttl: 64 last_seen: 4295868429 oldest_pkt: 16 4295845135, 4295848540, 4295851694, 4295851694, 4295853197, 4295853197, 4295856201, 4295856201, 4295859226, 4295859226, 4295862420, 4295862420, 4295865425, 4295865425, 4295868429, 4295868429
我想打一个脚本,controlls渡过last_seen号码发送的数据包数+ * 10比当前时间更小。
例如:if($ currenttime> = 4295187854 + 16 * 10)为第一行。
如果当前时间较大,则应删除该行。 这是试图通过SSH进行登录的延迟,并且SSH文件记录了每个写入了错误密码超过3次的IP。
我对脚本很陌生,试着用awk解决这个问题,但没有取得任何进展。你们有没有想法,我可以逐行扫描文件,分析不同的领域,并根据if语句的回答将其删除?
编辑 这是我制作的,这可能没有任何意义,因为我不明白awk实际上在做什么。
#!/bin/sh
currenttime=$(date +%s)
awk '{if ($currenttime >= $5+10*$7) print $0 > "temp.txt";}' SSH
cp -f temp.txt SSH
rm temp.txt
但是'10'因素,你乘以'16'? – Inian
我用我的“脚本”编辑了这个问题。 10只是硬编码,我认为10秒就够了! @Inian – Louise
从'$ 7'是16吗? –