On 2018-11-12 19:37, srinivasan wrote:
Dear Python Experts,

[snip]

*SECOND METHOD:*

When I use the subprocess I see the below issue:



     def get_gateway_ip(self):
         """
             Get the IP address to the WIFI module from the AP
         """

         #cmd = 'ip route show 0.0.0.0/0 dev wlp1s0 | cut -d\  -f3'
         # f = os.popen(cmd)
         # return str(f.read().strip())


         p = subprocess.Popen('ip route show 0.0.0.0/0 dev wlp1s0 | cut -d\
-f3', stdout=subprocess.PIPE)
         result = p.communicate()[0]
         print(result)


[snip]

Error:

root:~/qa/test_library# python3 wifi.py
Enabling wifi
Verify wifi connectivity
True
Get gateway wifi ip
Traceback (most recent call last):
   File "wifi.py", line 134, in <module>
     print(m.get_gateway_ip())
   File "wifi.py", line 76, in get_gateway_ip
     p = subprocess.Popen('ip route show 0.0.0.0/0 dev wlp1s0 | cut -d\
-f3', stdout=subprocess.PIPE)
   File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
     restore_signals, start_new_session)
   File "/usr/lib/python3.5/subprocess.py", line 1289, in _execute_child
     raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'ip route show
0.0.0.0/0 dev wlp1s0 | cut -d\\  -f3'
root:~/qa/test_library#


As I am stuck with this issue from past 2 days, wondering for any clues

'Popen' thinks that the string you gave it is the path to a command.

It's not; it's a command line with arguments.
You can tell it that the string is a command line by also passing the keyword argument 'shell=True':

p = subprocess.Popen(r'ip route show 0.0.0.0/0 dev wlp1s0 | cut -d\ -f3', stdout=subprocess.PIPE, shell=True)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to