通过Python获取dbus对象实例时传递环境变量
我正在使用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。