MacOS 双网线网络快速切换
方法一:直接打开系统网络设置,手动设置即可
方法二:对于Coders来讲,方式一实在太low了,我们来看一下如何使用代码控制网络切换
#!/usr/bin/python
# -*- coding: UTF-8 -*-
## Create by Cyril.
import os
import sys
import commands
import time
global homePath
homePath = os.path.abspath("./Desktop/Tools//")
print("HomePath->",homePath)
##此函数可自由切换Apple网络和PDCA网络,可重复调用
##/** 切换PDCA网络与APPLE网络, 注意:使用此函数前请确保网络列表中有且仅有两个Ethernet网络 */
def changeIP():
global homePath
netKey = "Ethernet"
scriptPath = homePath + "/checkNetStatus"
net_array=[]
net_1=0
net_2=0
j=0
execShellScript("networksetup -listallnetworkservices > %s 2>&1" %(homePath + "/networks.txt"))
net_array=readlineFromFile(homePath+ "/networks.txt") ##net_array[0] 为无用字符串
net_array[0]="echo helloworld | sudo -S networksetup -ordernetworkservices "
index=0
for item in net_array:
if index == 0:
pass
elif "*" in net_array[index]:
net_array[index]=net_array[index][1:]
net_array[index]="\"%s\""%(net_array[index])
else:
net_array[index]="\"%s\""%(net_array[index])
if netKey in net_array[index]:
if j == 0:
net_1=index
else:
net_2=index
tmp=net_array[net_1]
net_array[net_1]=net_array[net_2]
## print("net_array[net_1]",net_array[net_1])
net_array[net_2]=tmp
## print("net_array[net_2]",net_array[net_2])
j+=1
##print(net_array[index])
index+=1
execShellScript(*net_array) ##changeIP
##while res==1:
##time.sleep(5)
return execShellScript(scriptPath) ##checkNetStatus
## /**逐行读取txt ,将值赋给列表*/
def readlineFromFile(filePath):
with open(filePath, "r") as f:
txt=f.read()
array=txt.split("\n") ##
for item in array:
if item == '':
array.remove(item) ##删除列表中的空元素
return array
##/**
## * arg0 : scriptPath // 第一个参数是脚本路径
## * arg1 : ${1} // 第二个参数是脚本参数1 (log存放路径)
## * arg2 : ${2} // 第三个参数是脚本参数2 (sn.txt 路径)
## * arg3 : ${3} // 第四个参数是脚本参数3 (log名称,如:SW-DOWNLOAD.zip)
## * ...
## * argn : ${n}
## */
def execShellScript(scriptPath, *args):
index = 0
cmd = scriptPath + " "
for i in args:
cmd += i + " "
##print("Exec CMD->",cmd)
(status, output) = commands.getstatusoutput(cmd)
##print status, output ##输出shell执行返回状态码和输出结果
return output
print(changeIP())
执行结果如图: