You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
678 B
22 lines
678 B
from pyroute2 import NSPopen
|
|
from distutils.spawn import find_executable
|
|
|
|
def has_executable(name):
|
|
path = find_executable(name)
|
|
if path is None:
|
|
raise Exception(name + ": command not found")
|
|
return path
|
|
|
|
class NSPopenWithCheck(NSPopen):
|
|
"""
|
|
A wrapper for NSPopen that additionally checks if the program
|
|
to be executed is available from the system path or not.
|
|
If found, it proceeds with the usual NSPopen() call.
|
|
Otherwise, it raises an exception.
|
|
"""
|
|
|
|
def __init__(self, nsname, *argv, **kwarg):
|
|
name = list(argv)[0][0]
|
|
has_executable(name)
|
|
super(NSPopenWithCheck, self).__init__(nsname, *argv, **kwarg)
|