70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
from os.path import expanduser
|
||
|
import netifaces
|
||
|
import sys
|
||
|
import subprocess
|
||
|
|
||
|
def get_saved_interface_name():
|
||
|
home = expanduser("~")
|
||
|
name = ""
|
||
|
try:
|
||
|
with open(home + "/.cheetah_network.txt"):
|
||
|
name = f.read().split()[0]
|
||
|
except:
|
||
|
name = ""
|
||
|
return name
|
||
|
|
||
|
def get_likely_iface():
|
||
|
ifs = netifaces.interfaces()
|
||
|
print("Found {} interfaces:".format(len(ifs)))
|
||
|
|
||
|
if_to_addrs = {}
|
||
|
|
||
|
for i in ifs:
|
||
|
if_to_addrs[i] = []
|
||
|
if netifaces.AF_INET in netifaces.ifaddresses(i).keys():
|
||
|
for ad in netifaces.ifaddresses(i)[netifaces.AF_INET]:
|
||
|
if_to_addrs[i].append(ad['addr'])
|
||
|
|
||
|
for i in range(len(ifs)):
|
||
|
print(" [{}] : {} : {}".format(i, ifs[i], if_to_addrs[ifs[i]]))
|
||
|
|
||
|
found_10_ip = 0
|
||
|
selected_if = ""
|
||
|
|
||
|
for i in ifs:
|
||
|
match_string = "192.168.123."
|
||
|
if len(if_to_addrs[i]) > 0 and if_to_addrs[i][0][:len(match_string)] == match_string:
|
||
|
found_10_ip = found_10_ip + 1
|
||
|
selected_if = i
|
||
|
|
||
|
if found_10_ip == 0:
|
||
|
print("None of the network adapters look correct. Make sure you have set a 10.0.0.x static ip!")
|
||
|
return ""
|
||
|
|
||
|
elif found_10_ip == 1:
|
||
|
print("The adapter {} seems correct".format(selected_if))
|
||
|
return selected_if
|
||
|
|
||
|
else:
|
||
|
print("Found {} possible adapters, giving up".format(found_10_ip))
|
||
|
return ""
|
||
|
|
||
|
def main():
|
||
|
name = get_saved_interface_name()
|
||
|
if not name:
|
||
|
print("Didn't find saved interface, searching...")
|
||
|
name = get_likely_iface()
|
||
|
if not name:
|
||
|
sys.exit("Failed to find network adapter name")
|
||
|
else:
|
||
|
print("Found saved interface {}".format(name))
|
||
|
|
||
|
print("Setup for interface {}".format(name))
|
||
|
subprocess.call(['sudo', 'ifconfig', name, 'multicast'])
|
||
|
subprocess.call(['sudo', 'route', 'add', '-net', '224.0.0.0', 'netmask', '240.0.0.0', 'dev', name])
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|