小编Div*_*ivZ的帖子

简单的 BASH - 如何逐行读取文件

我有一个包含以下内容的文件:

6 192.168.0.4   
13 192.168.0.2        
2 192.168.0.9
Run Code Online (Sandbox Code Playgroud)

第一个数字是右侧 IP 尝试从同一网络内登录我的机器 (ssh) 的次数。目标是在尝试次数超过 3 次时使用 netfilter 阻止该 IP。这里,有 2 个条目符合条件。注意:可能有 3 个以上的条目。

我想不出一种方法来逐行排序这个文件(我对 BASH 非常陌生)。这是我尝试过的:

#!/bin/bash
file="/home/foo/documents/iptxt"
while IFS='' read line || [[ -n "$line" ]]; do
  char1=`awk '{ print $1 }' $file`
  char2=`awk '{ print $2 }' $file`
  if $char1 -gt 3
  then
    echo "$char2 has tried to login $char1 times
  fi
done <$file
Run Code Online (Sandbox Code Playgroud)

这给出了指向第 5 行(if 语句)的“未找到命令”错误。难怪,因为我回应了 $char1_attempt 并且它给出了:

6 13 2
6 13 2
6 13 2
Run Code Online (Sandbox Code Playgroud)

目前,J …

command-line bash scripts text-processing

2
推荐指数
1
解决办法
5957
查看次数

标签 统计

bash ×1

command-line ×1

scripts ×1

text-processing ×1