def get_status(interface): interface = iwlib.get_iwconfig(interface) if 'stats' not in interface: return None, None quality = interface['stats']['quality'] essid = bytes(interface['ESSID']).decode() return essid, quality
def step(self) -> Tuple[Optional[float], Optional[dict]]: try: data = iwlib.get_iwconfig(WIFI_DEVICE) data = {k: v.decode('utf-8') if isinstance(v, bytes) else v for k, v in data.items()} return time.time(), data except (Exception, OSError): return None, None
def get_status(interface): interface = iwlib.get_iwconfig(interface) if 'stats' not in interface: return (None, None) quality = interface['stats']['quality'] essid = bytes(interface['ESSID']).decode() return (essid, quality)
def get_status(interface_name): interface = iwlib.get_iwconfig(interface_name) if "stats" not in interface: return None, None quality = interface["stats"]["quality"] essid = bytes(interface["ESSID"]).decode() return essid, quality
def GetFreq(interface): try: import iwlib freq = iwlib.get_iwconfig(interface)['Frequency'] slogger.debug("Main Wi-Fi interface (%s) in Freq: %s" % (interface, freq)) freq = ''.join(x for x in freq if x.isdigit()) return freq except: return 0
def getDeviceType(devname, module=None): if devname in deviceTypes: return devname if module == "qeth": return QETH if module == "lcs": return LCS UNKNOWN = _('Unknown') mtype = UNKNOWN if not devname or devname == "": return mtype for i in __deviceTypeDict.keys(): if re.search(i, devname): mtype = __deviceTypeDict[i] if mtype == UNKNOWN: try: # if still unknown, try to get a MAC address hwaddr = ethtool.get_hwaddr(devname) if hwaddr: mtype = ETHERNET except: pass if mtype == ETHERNET: try: import iwlib # test for wireless iwlib.get_iwconfig(devname) mtype = WIRELESS except: pass return mtype
def format_wifi(self, statuses: List[str], iface: str): interface = iwlib.get_iwconfig(iface) if "stats" not in interface: return quality = interface["stats"]["quality"] essid = bytes(interface["ESSID"]).decode() addresses = self.get_addresses(iface) if addresses: statuses.append( self.wifi_format.format( essid=essid, quality=quality / 70, iface=iface, addresses=",".join(addresses), ) )
def on_wireless_config_page_prepare(self, druid_page, druid): if self.hwPage: self.device.Device = self.hwDruid.hw.Name self.device.Alias = None if self.device.Device != None: try: import iwlib info = iwlib.get_iwconfig(self.device.Device) except: pass else: if info.has_key("Mode"): values = [r[1].lower() for r in self.modestore] match_row = values.index(info["Mode"].lower()) self.xml.get_widget("modeCombo").set_active(match_row) if info.has_key("ESSID") and info["ESSID"] != "": self.xml.get_widget("essidSpecButton").set_active(True) self.xml.get_widget("essidEntry").set_sensitive(True) self.xml.get_widget("essidEntry").set_text(info["ESSID"]) else: self.xml.get_widget("essidAutoButton").set_active(True) self.xml.get_widget("essidEntry").set_sensitive(False) if info.has_key("Frequency") and info["Frequency"] < 1000: self.xml.get_widget("channelCombo").set_text( int(info["Frequency"])) if info.has_key("BitRate"): self.xml.get_widget("rateEntry").set_text( _(info["BitRate"])) if info.has_key("Key") and info["Key"] != "off": self.xml.get_widget("keyEntry").set_text(info["Key"]) self.on_modeChanged(self.xml.get_widget("modeCombo")) self.on_essidAutoButton_toggled(self.xml.get_widget("essidAutoButton")) self.xml.get_widget("modeCombo").connect("changed", self.on_modeChanged)
def notification(qtile: Qtile, request: str) -> None: """Used for mouse callbacks and keybinds to send notifications""" title: str = "" message: str = "" try: if request == "wifi": try: iface = iwlib.get_iwconfig(WIFI_INTERFACE) quality = iface["stats"]["quality"] quality = round((quality / 70) * 100) ssid = str(iface["ESSID"], encoding="utf-8") title = "Wifi" message = f"{ssid}\nSignal strength: {quality}%" except KeyError: title = "Disconnected" message = "" elif request == "date": today = datetime.today() todaysdate = today.strftime("%-d %B") weekday = today.strftime("%A") week = datetime.today().isocalendar()[1] title = f"{todaysdate} ({weekday})" message = f"Week {week}" elif request == "battery": if HAS_BATTERY: battery = psutil.sensors_battery() assert battery is not None, "Battery must be found by psutil" title = "Battery" message = f"{round(battery.percent)}%" else: return send_notification(title, message, timeout=2500, urgent=False) except Exception as err: logger.warning(f"Failed to send notification: {err}")
def poll(self): gws = netifaces.gateways() try: # Try to figure out if we're connected normally iface = gws['default'][netifaces.AF_INET][1] except (IndexError, KeyError): # We might be on a VPN for iface in netifaces.interfaces(): if iface == 'lo': continue adr = netifaces.ifaddresses(iface) try: adr[netifaces.AF_INET][0]['peer'] return "\uf023" except (KeyError, IndexError): pass return "\uf127" try: c = get_iwconfig(iface) except AttributeError: if iface[:3] == "usb": return "\uf287" else: return "\uf0e8" quality = c[b'stats'][b'quality'] if quality >= 53: wifi_quality = 4 elif quality >= 35: wifi_quality = 3 elif quality >= 17: wifi_quality = 2 else: wifi_quality = 1 return "\uf1eb " + c[b'ESSID'].decode()
def wireless(pl, segment_info, device=None, format='{quality:3.0%} at {essid}', short_format='{quality:3.0%}', format_down=None, auto_shrink=False): '''Returns the current connection quality. :param string device: the device to use. Per default this segment will try to be smart. :param string format: the output format :param string short_format: optional shorter format when the powerline needs to shrink segments :param string format_down: if set to any other value than ``None``, it will be shown when no wireless connection is present. :param bool auto_shrink: if set to true, this segment will use ``short_format`` per default, only using ``format`` when any message is present on the ``net.wireless`` message channel. Highlight groups used: ``wireless:quality`` (gradient), ``wireless:down`` alternatively ``wireless:quality`` (gradient) Click values supplied: ``quality`` (int), ``essid`` (string) ''' payload_name = 'net.wireless' if not device: for interface in os.listdir('/sys/class/net'): if interface.startswith('wl'): device = interface break try: import iwlib except ImportError: pl.info("Couldn't load iwlib") return None if not format_down else [{ 'contents': format_down.format(quality=0, essid=None, frequency=0), 'highlight_groups': ['wireless:down', 'wireless:quality', 'quality_gradient'], 'gradient_level': 100, 'payload_name': payload_name }] stats = iwlib.get_iwconfig(device) stats = { a.lower(): stats[a].decode() if isinstance(stats[a], bytes) else stats[a] for a in stats } quality = 0 essid = '' if 'essid' in stats: essid = stats['essid'] if 'stats' in stats and 'quality' in stats['stats']: quality = stats['stats']['quality'] if essid == '' or quality == 0: return None if not format_down else [{ 'contents': format_down.format(quality=0, essid=None, **stats), 'highlight_groups': ['wireless:down', 'wireless:quality', 'quality_gradient'], 'gradient_level': 100, 'payload_name': payload_name }] if not auto_shrink or ('payloads' in segment_info and payload_name in segment_info['payloads'] and segment_info['payloads'][payload_name]): return [{ 'contents': format.format(quality=quality / 70, **stats), 'highlight_groups': ['wireless:quality', 'quality_gradient'], 'gradient_level': 100 * (70 - quality) / 70, 'click_values': { 'essid': essid, 'quality': quality * 100 / 70 }, 'payload_name': payload_name }] return [{ 'contents': short_format.format(quality=quality / 70, **stats), 'highlight_groups': ['wireless:quality', 'quality_gradient'], 'gradient_level': 100 * (70 - quality) / 70, 'click_values': { 'essid': essid, 'quality': quality * 100 / 70 }, 'payload_name': payload_name, 'truncate': lambda a, b, c: short_format.format(quality=quality / 70, **stats) }]
def poll(): config = iwlib.get_iwconfig(device) if config["Access Point"] == "00:00:00:00:00:00": # connection lost, set ssid again and hope for the best print("kicking") iwlib.iwconfig.set_essid(device, ssid)
def usage(): print("wi-watch.py [device] [SSID]") print("example: wi-watch.py wlan0 Home") if len(sys.argv) != 3: usage() sys.exit(1) device = sys.argv[1] ssid = sys.argv[2] # do it once to make sure the interface is right try: iwlib.get_iwconfig(device) except Exception as ex: print(ex) sys.exit(1) def poll(): config = iwlib.get_iwconfig(device) if config["Access Point"] == "00:00:00:00:00:00": # connection lost, set ssid again and hope for the best print("kicking") iwlib.iwconfig.set_essid(device, ssid) while True: poll()
def get_status(interface): interface = iwlib.get_iwconfig(interface) quality = interface['stats']['quality'] essid = bytes(interface['ESSID']).decode() return (essid, quality)