IP Aralık'larım var ve belirli bir ülkeyi reddetmek için bir ağ listesi oluşturmam gerekiyor.IP Aralığı'ndan CIDR'yi MySQL içinde seçin
Bunu kullanarak db'mden bir ip aralığı listesi oluşturabilirim. Bu sonucu
ip_from inet_ntoa(ip_from) ip_to inet_ntoa(ip_to)
16777472 1.0.1.0 16778239 1.0.3.255
üretir Ama CIDR biçiminde olduğu çıktı ihtiyaç ve bazen aralık birden fazla satır böyle döndü olacaktır
SELECT
ip_from,
Inet_ntoa(ip_from),
ip_to,
Inet_ntoa(ip_to)
FROM
ip_address_data
WHERE
country_code = 'XX'
LIMIT 1
.
1.0.1.0/24
1.0.2.0/23
Belirli bir deyim kullanarak bunları dinamik olarak oluşturmak için herhangi bir yolu var mı? Bu sözdizimi harika olurdu, ancak giriş satırında birden fazla çıktı satırı döndürecekse, saklı bir yordam olması gerekeceğini farz ediyorum.
SELECT
CONCAT('/sbin/route add -net ', CONVERT_TO_CIDR(ip_from,ip_to), ' reject;') AS command
FROM
ip_info.ip_address_data
WHERE
country_code='XX'
neden downvote? Sebebi işe yaramıyor. Fikir aramıyorum, bunun için yardıma ihtiyacım olan basit bir matematik problemi. – jbrahy
Bu konuşma, http://stackoverflow.com/questions/595748/is-there-way-to-match-ip-with-ipcidr-straight-from-select-query?rq=1 –