通过Python获取dbus对象实例时传递环境变量

1 投票
1 回答
711 浏览
提问于 2025-04-17 08:26

我正在使用Python来检查Ubuntu上一个upstart任务的状态。

最近我修改了这个upstart任务,添加了一个实例部分,内容是:instance $some_var。结果,我的代码就不再能正常工作了。

如果我尝试:

path = upstart.GetJobByName("test", dbus_interface="com.ubuntu.Upstart0_6")                                         
job = bus.get_object("com.ubuntu.Upstart", path)                           
path = job.GetInstance([], dbus_interface="com.ubuntu.Upstart0_6.Job")

就会失败,提示我dbus.exceptions.DBusException: org.freedesktop.DBus.Error.InvalidArgs: Unknown parameter: some_var

我需要把some_var这个环境变量传递给dbus接口。可是,把它设置在os.environ里似乎没有用。

1 个回答

0

我觉得 job.GetInstance(["some_var=some_value"]) 应该可以正常工作。至少对我来说,这样做是没问题的:

dbus-send --print-reply --system /com/ubuntu/Upstart/jobs/tty \
          --dest=com.ubuntu.Upstart \
          com.ubuntu.Upstart0_6.Job.GetInstance array:string:"TTY=/dev/tty2"

(tty服务是用 instance $TTY 定义的)

另外,看看 env 参数的说明,具体可以参考 com.ubuntu.Upstart0_6.Job.Start

撰写回答