3

いくつかのアクションを実行する場合に一部の IP をブロックする Python スクリプトがあります。このスクリプトには、IP が既にブロックされているかどうかを確認する関数が含まれています。これに加えて、IPがデータベーステーブルに保存されているかどうかもチェックし、保存されている場合はブロックしない機能が欲しいです(ホワイトリスト)

関数は次のようになります。

def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep " + ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    else:
    return False

私はPythonに精通していないので、これをどのように使用するかはわかりませんが、かなり単純だと思います。あなたが持っているかもしれない提案に感謝します。ありがとうございました !

後で編集: IP を手動で追加するための PHP インターフェイスを作成するので、MySQL データベースを使用したいと考えています。それをどのように検索しますか?テーブルには、id と whitelist_ip の 2 つのフィールドしかありません。後者には、ホワイトリストに登録する必要がある IP が格納されます。

4

1 に答える 1

0

このホワイトリストを手動で編集することを計画している場合は、IPアドレスのリストを含むファイルを使用できます。(1行に1つ)次に、次のようなコードを使用して確認できます。

def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep " + ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    whitelist = open('<filename>')
    for ip in whitelist.readlines():
        if ip_address == ip:
            return True
    return False

これは、最初に行ったチェックを使用してチェックし、それが失敗した場合は、IPホワイトリストをチェックします。関数はif句から戻るため、else句は必要ありません。

SQLデータベースを使用してホワイトリストデータを保存する場合は、mysqlまたはsqliteを使用することをお勧めします。これらは両方とも利用可能なPythonラッパーを持っています。

于 2011-05-09T23:22:48.253 に答える