[PATCH 04/12] hwsim: Use pgrep instead of ps

Andrei Otcheretianski andrei.otcheretianski at intel.com
Mon Dec 25 02:21:01 PST 2023


From: Benjamin Berg <benjamin.berg at intel.com>

The ps command as shipped by busybox does not support the "command"
column. Change the code to use pgrep instead which will work fine in all
environments.

Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---
 tests/hwsim/test_ap_eap.py | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/tests/hwsim/test_ap_eap.py b/tests/hwsim/test_ap_eap.py
index bfc1bb4175..3885943153 100644
--- a/tests/hwsim/test_ap_eap.py
+++ b/tests/hwsim/test_ap_eap.py
@@ -7607,20 +7607,15 @@ def test_ap_wpa2_eap_psk_mac_addr_change(dev, apdev):
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
     hapd = hostapd.add_ap(apdev[0], params)
 
-    cmd = subprocess.Popen(['ps', '-eo', 'pid,command'], stdout=subprocess.PIPE)
-    res = cmd.stdout.read().decode()
+    cmd = subprocess.Popen(['pgrep', '-nf', 'wpa_supplicant.*' + dev[0].ifname], stdout=subprocess.PIPE)
+    res = cmd.stdout.read().decode().strip()
     cmd.stdout.close()
     pid = 0
-    for p in res.splitlines():
-        if "wpa_supplicant" not in p:
-            continue
-        if dev[0].ifname not in p:
-            continue
-        pid = int(p.strip().split(' ')[0])
-    if pid == 0:
-        logger.info("Could not find wpa_supplicant PID")
-    else:
+    if res:
+        pid = int(res.strip())
         logger.info("wpa_supplicant PID %d" % pid)
+    else:
+        logger.info("Could not find wpa_supplicant PID")
 
     addr = dev[0].get_status_field("address")
     subprocess.call(['ip', 'link', 'set', 'dev', dev[0].ifname, 'down'])
-- 
2.43.0




More information about the Hostap mailing list