2011-05-09 74 views
2

我有一個Python腳本,如果它們執行某些操作,它將阻止一些IP。該腳本包含一個函數來檢查IP是否已被阻止。除了這個,我想的功能也檢查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,所以我不確定如何去用這個,但我想它非常簡單。我很感謝您的任何建議。謝謝 !

後來編輯:我想用一個MySQL數據庫,因爲我將編寫一個PHP接口來手動添加IP。我將如何搜索?該表只有兩個字段:id和whitelist_ip,後者存儲需要列入白名單的IP。

+0

我也忘了補充說,表名實際上是白名單,它只包含2行:包含實際IP地址的id和whitelist_ip。 – darkey3 2011-05-09 23:18:01

回答

0

如果您打算手動編輯此白名單,您可以在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 
    whitelist = open('<filename>') 
    for ip in whitelist.readlines(): 
     if ip_address == ip: 
      return True 
    return False 

這將首先檢查使用您所做的檢查,如果失敗,它會檢查IP白名單。因爲該函數從if子句返回,所以不需要else子句。

如果你想使用sql數據庫來存儲白名單數據,我建議使用mysql或sqlite。這兩個都有python包裝可用。

+0

謝謝,但我想使用MySQL數據庫,因爲我將編寫一個PHP接口來手動添加IP。我將如何搜索?該表只有兩個字段:id和whitelist_ip,後者存儲需要列入白名單的IP。 – darkey3 2011-05-09 23:30:08

+0

你會想看看一個名爲MySQLdb的python包。你可以在這裏找到它:http://sourceforge.net/projects/mysql-python/forums/forum/70461/topic/1653833 – 2011-05-09 23:50:16

+0

但我如何在編碼中實現這一點?這就是我感興趣的。 – darkey3 2011-05-10 10:24:32