python - 使用 Python 运行外部应用程序并在内部调用它们的方法

标签 python ubuntu windows-subsystem-for-linux

祝大家阳光明媚! :D,
我有一个问题要问你们。我有以下python“脚本”:

import os    
os.system('ubuntu.exe')
这会打开在我的 WSL 上运行的 Ubuntu。现在,当 Ubuntu 终端出现时:
Ubuntu terminal using WSL
我想执行以下命令:须藤/etc/init.d/dbus 启动 须藤/etc/init.d/xrdp 开始 使用我的 python 脚本(只是自动执行)。但是,当我运行上述命令之一时,终端会请求我的密码:
Terminal wants me to enter password
所以脚本应该也能输入密码。
有什么办法,怎么办?
亲切的问候,
D.

最佳答案

question/answers评论中的链接很好读(尤其是 sudoers),WSL 有更好的方法。而不是使用 ubuntu.exe , 使用较新的 wsl.exe替代品。 wsl命令提供了对启动的更多控制,包括能够更改用户:

import os    
os.system('wsl ~ -u root -e sh -c "nohup service xrdp start"')
os.system('wsl -u root service dbus start')
nohup需要,因为这似乎是一个时间问题。通过 WSL 命令启动时,shell(拥有进程)将在 xrdp 之前终止有机会 fork 。 nohup只需确保完整的 xrdp init 脚本有机会在此之前运行。本质上,这确实不是 WSL 问题。如果你用 exec sh -c "sudo service xrdp start" 做类似的事情,它也可以被复制。 .
其他一些笔记。首先,这不需要密码,因为 WSL 没有“登录”的概念。 /init进程(WSL 的 PID1 和初始化)负责为每个 session 设置拥有用户。这不被视为安全风险,因为即使是根 WSL 用户也以不超过 Windows 用户的权限运行。
另请注意,根据我的经验,没有必要开始 dbus对于 xrdp访问,即使我已经看到说明是这样的。最终这将取决于你想在 xrdp 中运行什么。 session ,当然。

关于python - 使用 Python 运行外部应用程序并在内部调用它们的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69607990/

相关文章:

c++ - Qt5.2 Qml 支持 Ubuntu 全局菜单

linux - 无法打开 X11 显示 - 如何在 WSL 上执行 SFML 输出 - 加载 WSL GUI 应用程序

visual-studio-code - 无法从命令环境 cd 开始调试意外的 gdb 输出

python - 如何根据条件过滤 pandas 系列值

python - 为重复项添加增量值

ubuntu - 使用 sudo 为 puppetlabs-apache 模块运行 puppet 代理

reactjs - 运行 WSL 时如何在 Windows 中设置 VS 代码调试?

python - 将numpy uint8输入tensorflow float32占位符

python - 使用 RSA 在 Python 中逐行加密文件并将其与另一个文件进行比较

linux - 用于应用程序的 Ubuntu 内核模块