Skip to content

Instantly share code, notes, and snippets.

@popcmp
Last active April 18, 2025 19:03
Show Gist options
  • Select an option

  • Save popcmp/030a094bf0f9fb51ea40a8c8a90bc71d to your computer and use it in GitHub Desktop.

Select an option

Save popcmp/030a094bf0f9fb51ea40a8c8a90bc71d to your computer and use it in GitHub Desktop.
Парсер используемых подсетей гугла для настройки статических маршрутов в роутере
import requests
SUBNETS = { "32": "255.255.255.255",
"31": "255.255.255.254",
"30": "255.255.255.252",
"29": "255.255.255.248",
"28": "255.255.255.240",
"27": "255.255.255.224",
"26": "255.255.255.192",
"25": "255.255.255.128",
"24": "255.255.255.0",
"23": "255.255.254.0",
"22": "255.255.252.0",
"21": "255.255.248.0",
"20": "255.255.240.0",
"19": "255.255.224.0",
"18": "255.255.192.0",
"17": "255.255.128.0",
"16": "255.255.0.0",
"15": "255.254.0.0",
"14": "255.252.0.0",
"13": "255.248.0.0",
"12": "255.240.0.0",
"11": "255.224.0.0",
"10": "255.192.0.0",
"9": "255.128.0.0",
"8": "255.0.0.0",
"7": "254.0.0.0",
"6": "252.0.0.0",
"5": "248.0.0.0",
"4": "240.0.0.0",
"3": "224.0.0.0",
"2": "192.0.0.0",
"1": "128.0.0.0",
"0": "0.0.0.0"
}
def short2longnet(short: str) -> str:
return SUBNETS[short]
def get_net(s: str) -> tuple[str, str]:
return s.strip().split("/")
def make_route(net: str, mask: str, dest: str) -> str:
return f"route add {net} mask {mask} {dest}"
def main():
google_url = "https://www.gstatic.com/ipranges/goog.json"
r = requests.get(google_url)
data = r.json()
for pref in data["prefixes"]:
try:
netblock = pref["ipv4Prefix"]
net, short_mask = get_net(netblock)
if int(short_mask) > 29:
continue
long_mask = short2longnet(short_mask)
route = make_route(net, long_mask, "0.0.0.0")
print(route)
except KeyError:
pass
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment