WaydeHall
WaydeHall

Reputation: 153

How do I get Python to know what Wifi the user is connected to?

I'm 14, pardon my Python knowlege. I'm trying to make this program that will only run while I'm at school (on the school's Wifi) using an if/else statement like this:

if ontheschoolwifi:
     Keep running the program
else:
     close the program because im not at school and wont need it

I'd like to know how to let python know how to get what wifi it is connected to. Thank you, in advance, for your help :)

Upvotes: 12

Views: 23078

Answers (7)

Evan
Evan

Reputation: 1

Mark Ch's answer didn't work for me as I was using Python 3. To make it work, you need to make a very simple change by making a comparison between two strings as follows :

import subprocess

if "SchoolWifiName" in str(subprocess.check_output("netsh wlan show interfaces")):
    print "I am on school wifi!"

Upvotes: 0

Ajith Natarajan
Ajith Natarajan

Reputation: 111

import subprocess

print(str(subprocess.check_output(['iwgetid -r'], shell=True)).split('\'')[1][:-2])

will print the current Wi-Fi SSID

To check if the SSID has the desired name:

import subprocess

if 'School_wifi_name' in str(subprocess.check_output(['iwgetid -r'], shell=True)).split('\'')[1][:-2]:
  print('I am on school Wi-Fi!')

Upvotes: 1

user856387
user856387

Reputation: 91

This should be the best solution:

import subprocess

if 'SchoolWifiName' in subprocess.check_output("netsh wlan show interfaces").decode('utf-8'):
    print('I am on school wifi!')

Upvotes: 2

ghhiuu
ghhiuu

Reputation: 101

here some code that actually works, the other answers did not work for me on Windows...

import subprocess

wifi = subprocess.check_output(['netsh', 'WLAN', 'show', 'interfaces'])
data = wifi.decode('utf-8')
if "school_wifi_name" in data:
    print("connected to speccific wifi")
else:
    print("not connected")

Upvotes: 10

Tejesh Teju
Tejesh Teju

Reputation: 117

This will help you out to get the network name.

import subprocess

subprocess_result = subprocess.Popen('iwgetid',shell=True,stdout=subprocess.PIPE)
subprocess_output = subprocess_result.communicate()[0],subprocess_result.returncode
network_name = subprocess_output[0].decode('utf-8')

Upvotes: 2

Mark Ch
Mark Ch

Reputation: 3020

import subprocess

if "SchoolWifiName" in subprocess.check_output("netsh wlan show interfaces"):
    print "I am on school wifi!"

Upvotes: 13

flamenco
flamenco

Reputation: 2840

For Mac OS query the airport using os module. "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I" Then, look the name assigned to SSID by your school. It should be something similar for the other operating systems.

Upvotes: 6

Related Questions