Connecting to a Wifi SSID from the macOS command line

Sometimes it's useful to be able to connect to an SSID (or switch from one to the other) from the command line. Here is how to do this on macOS (tested on High Sierra):

networksetup -setairportnetwork [interface] [SSID] [password]

For example:

networksetup -setairportnetwork en0 SSID1
networksetup -setairportnetwork en0 SSID2
networksetup -setairportnetwork en0 MyHouseSSID MyPassword

Using this command to connect to the same SSID your already connected acts as a reconnect.

Get wifi details from macOS command line

GUI is great but CLI is awesome. Here are a few macOS CLI commands go get wifi details:

Get details about your current connection/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

Sample output:

     agrCtlRSSI: -61
     agrExtRSSI: 0
    agrCtlNoise: -90
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 162
        maxRate: 300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 9c:3d:cf:d0:e2:34
           SSID: Maison_5GHz
            MCS: 12
        channel: 36,1

Get the list of an SSID broadcast scan (aka list of available visible SSID)
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s

Sample output:

                            SSID BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
                         VLAN805 54:3d:37:d1:b5:c8 -42  11      Y  US NONE
                         VLAN205 54:3d:37:91:b5:c8 -43  11      Y  US NONE

Sync with remote as you code

If your like me, sometimes you can not test the code your writing on your workstation and the code need to be 'installed' or 'deployed' to a remote server in order to test it because of hardware constrain or physical environment (IO, network,...).

The following is a simple shell script that will monitor a local path and rsync it to a remote server when a file is changed. It can also remote execute some commands (like restarting services for example).


if [ -z ${1} ] || [ -z ${2} ] || [ -z ${3} ] || [ -z ${4} ]; then
cat <<EOF
  remote_sync local_path remote_user remote_server remote_path [remote_script]

local_path:    Local path from where the files will be copied from (required)
remote_user:   Remote user to use for rsync  (required)
remote_server: Remote server (IP of FQDN)  (required)
remote_path:   Remote path where the files will be copied to  (required)
remote_script: Remote script to execute after syncing the files (optional)
              Script mus…