Switch Wi-Fi networks from macOS Terminal

Written on April 7, 2021

macOS provides a command line interface called, networksetup which allows you to make all sorts of network configurations.

One of the configurations I’ve found helpful is switching Wi-Fi networks from the command line in Terminal.

To switch Wi-Fi networks using networksetup, you’ll use the option, -setairportnetwork. But before you can do that, you need to first find your Wi-Fi’s network interface.

Finding your Wi-Fi’s network interface

The quickest way to find your Wi-Fi’s network interface is to use another option for networksetup called -listallhardwareports.

Typing in,

networksetup -listallhardwareports

into Terminal should yield something like this,

Hardware Port: Wi-Fi
Device: en0

Hardware Port: Bluetooth PAN
Device: en4

Hardware Port: Thunderbolt 1
Device: en1

From this list, you might’ve already guessed, the interface for the Wi-Fi network is en0.

Your results may vary on your machine. Just look for the title, Hardware Port: Wi-Fi and that should be your Wi-Fi’s network interface.

Switching Wi-Fi network from the Terminal with networksetup

Now that you have your Wi-Fi’s network interface, you’ll plug it into the -setairportnetwork option like this,

networksetup -setairportnetwork en0 "Pizza Time" "PizzaN0mN0m!"

As you can see, the -setairportnetwork option accepts three values. The first two are required and the third is optional.

The first value is the network interface, which in the example above, I’ve set it to en0.

The next value where I’ve got, “Pizza Time” is the name of the network.

The last—and optional—value is the password for the network you’re trying to connect to.

Upon executing this command in Terminal, you should see the Wi-Fi icon in the top right hand corner of macOS flicker on and off as it attempts to switch networks.

If successful, you should see that you’re connect to the network you’ve passed to networksetup.

Validate current connected Wi-Fi network

You could also validate the current connected Wi-Fi network using networksetup by using the -getairportnetwork option.

To do this, you’ll want to use the option like this,

networksetup -getairportnetwork en0

Again, you’ll want to designate the network interface you’re checking for, which in my case is en0.

This should yield results like this,

Current Wi-Fi Network: Pizza Time

Practical application of connecting to a Wi-Fi network from Terminal

You might be wondering, “What is the practical application of trying to connect or change a Wi-Fi network from the Terminal?”.

And that’s a super valid question, that I honestly didn’t think I needed to know how to do.

But the reason why I had to figure it out is because I have a couple of wireless networks at my house. Depending on where I’m sitting at the house, the strength of the signal varies.

Working remotely, this means my Zoom call experiences could also vary based on which network I’m on.

I’m usually at my desk when I take Zoom calls, which means I know which network I always want to be connected to for the best call experience.

To do this, I use Keyboard Maestro to run a macro every single time Zoom gains focus.

The macro first checks to see if I’m on my preferred network.

If it isn’t Keyboard Maestro will run the networksetup command to switch networks. This is possible because one of Keyboard Maestro’s actions is to be able to run shell scripts which means it can run command line commands from within Keyboard Maestro.

Stay in touch

Thanks for reading this article. I'd love to stay in touch and share more tips on programming and side projects with you. Sign up and I'll send you my articles straight to your email, you'll also get a free copy of the light themed version of my Git cheat sheet.
Git cheat sheet preview image