9acce13a35
qubes.VMShell service, used by qvm-run, expects the command on the first input line. Previously, when --localcmd was used, the command wasn't written anywhere and the local command was connected directly to qubes.VMShell service. And the first line of its output was interpreted as a command. Fix this by starting the local command separately, after sending the command to qubes.VMShell service. While at it, unify handling shell command and service calls in the process. vm.run_service(..., localcmd= ) isn't that useful in general case, because for qubes.VMShell the caller first need to send the command before starting local process. Since the qvm-run tool needs to implement manual starting localcmd anyway, don't use localcmd= run_service's argument at all to unify calling methods. There is slight behavior change: previously localcmd was started only after establishing service connection (for example only if qrexec policy allows), now it is started in all the cases. Fixes QubesOS/qubes-issues#4040 |
||
---|---|---|
ci | ||
debian | ||
doc | ||
etc | ||
qubesadmin | ||
rpm_spec | ||
test-packages | ||
.gitignore | ||
.pylintrc | ||
.travis.yml | ||
LICENSE | ||
Makefile | ||
Makefile.builder | ||
README.md | ||
run-tests | ||
setup.py | ||
version |
This is client side implementation of Qubes Admin API. See https://www.qubes-os.org/doc/admin-api/ for protocol specification.
Compatibility
Most of the API modules are compatible with Python >= 2.7. Very few parts require Python >= 3.4:
- tools (
qvm-*
) - qubesadmin.events module (for asyncio module)
Parts not compatible with Python < 3.4, are not installed in such environment.