MacOS 双网线网络快速切换

MacOS 双网线网络快速切换

  1. 方法一:直接打开系统网络设置,手动设置即可
    点开齿轮设置
    手动拖拽调整网络服务顺序

  2. 方法二:对于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())

执行结果如图:
可在预设的两个网络中自由切换

猜你喜欢

转载自blog.csdn.net/u011865919/article/details/81365531