54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
import subprocess
|
|
import re
|
|
|
|
def search_wifi():
|
|
# WiFi 네트워크 검색
|
|
result = subprocess.check_output(['sudo','iwlist', 'wlan0', 'scan'])
|
|
networks = re.findall("ESSID:\"(.+?)\"", str(result))
|
|
return networks
|
|
|
|
|
|
def connect_wifi(ssid, password):
|
|
config_path = '/etc/wpa_supplicant/wpa_supplicant.conf'
|
|
|
|
# wpa_supplicant.conf 파일 읽기
|
|
with open(config_path, 'r') as file:
|
|
lines = file.readlines()
|
|
|
|
# 기존 네트워크 설정 주석 처리
|
|
new_lines = []
|
|
network_block = False
|
|
for line in lines:
|
|
if line.strip().startswith('network={'):
|
|
network_block = True
|
|
if network_block:
|
|
if line.strip().startswith('}'):
|
|
network_block = False
|
|
# 기존 네트워크 블록을 주석 처리
|
|
line = '#' + line
|
|
new_lines.append(line)
|
|
|
|
# 새로운 네트워크 설정 추가
|
|
new_network = f'\nnetwork={{\n\tssid="{ssid}"\n\tpsk="{password}"\n\tkey_mgmt=WPA-PSK\n}}\n'
|
|
new_lines.append(new_network)
|
|
|
|
# 수정된 내용을 파일에 다시 쓰기
|
|
with open(config_path, 'w') as file:
|
|
file.writelines(new_lines)
|
|
|
|
# 네트워크 인터페이스 재시작
|
|
subprocess.call(['sudo','wpa_cli', '-i', 'wlan0', 'reconfigure'])
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
networks = search_wifi()
|
|
print("사용 가능한 WiFi 네트워크:")
|
|
for i, ssid in enumerate(networks):
|
|
print(f"{i + 1}. {ssid}")
|
|
|
|
choice = int(input("연결할 네트워크 번호를 선택하세요: "))
|
|
password = input("WiFi 비밀번호를 입력하세요: ")
|
|
|
|
connect_wifi(networks[choice - 1], password)
|
|
print("WiFi 네트워크가 변경되었습니다.") |