使用Whois遍历具有IP地址的文件

时间:2019-02-15 21:01:53

标签: bash

到目前为止,我有一个脚本,该脚本可以获取访问我的网站的IP地址:

class Car:
    def __init__(self, id, top_speed):
       self.id = id
       self.top_speed = top_speed

    def get_id(self):
        return self.id

    def get_top_speed(self):
        return self.top_speed

class Garage:
    def __init__(self):
        self.cars_holder = {}

        def add_car(self, car):
        self.cars_holder[car.get_id()] = car

    def remove_car(self, car_id):
        del self.cars_holder[car_id]

    def show_cars(self):
        for car in self.cars_holder.values():
            print(car)

GARAGE_DICT = [{'id': '1x148i-36y5-5rt2',
                'dimensions': {'top': 275,
                               'left': 279,
                               'width': 75,
                               'height': 75},
                'attrs': {'weight': 12,
                          'top_speed': 0.7,
                          'noise': 0.45
                          }},
                {'id': '223a3-33e5-4ea3',
                 'dimensions': {'top': 241,
                                'left': 234,
                                'width': 71,
                                'height': 65},
                 'attrs': {'weight': 12,
                           'top_speed': 0.74,
                           'noise': 0.4345
                           }
                 }]

if __name__ == "__main__":
    garage = Garage()

    for car_dict in GARAGE_DICT:
        attrs = car_dict['attrs']
        dimensions = car_dict['dimensions']
        garage.add_car(Car(car_dict['id'], attrs['weight'], attrs['top_speed'], attrs['noise'],
                       Size(dimensions['top'], dimensions['left'], dimensions['width'], dimensions['height'])))

   top_speed_of_first_car_in_garage = garage[0].get_top_speed  # ?

我正在尝试使用whois遍历这些ip地址,并使用ip来自的唯一国家/地区列表将其重写为初始文件。

我可以像这样单独进行操作:

sudo awk '{ print $1 } ' /var/log/httpd/access_log | sort | uniq > ~/bad_ips.out

但是我不确定如何遍历文件中的每一个,我们将不胜感激

2 个答案:

答案 0 :(得分:0)

xargs可能符合您的条件。它基本上为传递给其stdin的每一行运行给定命令。您可以在man xargs上查看更多详细信息。

您还可以通过使用-u的{​​{1}}选项并使用sort本身来匹配模式awk来减少管道中的命令。

这将满足您的要求:

country

答案 1 :(得分:0)

如果每个条目都在换行符上,则可以使用while循环:

#! /bin/bash

while read line
do
    echo $line
done < $1

像这样使用脚本:

./nameOfScript fileWithIps.txt