1

我正在使用 miniedit(mininet 的 UI)和 ONOS 作为 SDN 控制器在 SDN 上进行 POC,我想在运行拓扑时从 miniedit 调用 ONOS,因此在 python 中使用了以下代码行

os.system("gnome-terminal -e 'bash -c \"/home/paxterra/onos/tools/dev/bin/onos-karaf; exec bash\"' &")

如果我以普通用户身份执行它,这将调用 ONOS,但由于此代码存在于 miniedit.py 中并且我以超级用户身份运行 miniedit.py,因此会引发错误。

Error : /home/paxterra/onos/tools/dev/bin/onos-karaf: line 7: onos-setup-karaf: command not found

我尝试设置环境变量PATH="/home/paxterra/onos/tools/dev/bin/",然后再次尝试该命令,它给出了同样的错误。

谁能帮我解决这个问题。?

4

1 回答 1

0

使用时sudo,默认不保留路径变量。Sudo有自己的路径变量。这是一种安全设计。

因为onos-setup-karaf不在路径中(即您使用 onos-karaf 的完整路径,但 onos-setup-karaf 可能不在您的工作目录中)您应该尝试执行sudo env "PATH=$PATH" miniedit或者启动该程序但您需要保留路径变量。

于 2016-09-14T19:50:07.163 回答