运行 外部应用程序使用 Python 并在内部调用它们的方法
Run external applications using Python and call their methods inside
祝大家阳光明媚! :D,
我有一个问题要问你们。我有以下 python“脚本”:
import os
os.system('ubuntu.exe')
在我的 WSL 上打开 Ubuntu 运行ning。现在,当 Ubuntu 终端出现时:
我想执行以下命令:sudo /etc/init.d/dbus start 和 sudo /etc/init.d/xrdp start 使用我的 python 脚本(自动执行)。但是,当我 运行 上面的命令之一时,终端请求我的密码:
所以脚本应该也可以输入密码。
有什么办法,怎么做吗?
亲切的问候,
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
有机会分叉之前终止。 nohup
只是确保完整的 xrdp
初始化脚本在此之前有机会 运行。就其本身而言,这确实不是 WSL 问题。如果你用 exec sh -c "sudo service xrdp start"
.
做类似的事情,它也可以被复制
其他一些注意事项。首先,这不需要密码,因为 WSL 没有“登录”的概念。 /init
进程(WSL 的 PID1 和初始化)负责为每个会话设置拥有用户。这不被视为安全风险,因为即使根 WSL 用户 运行 的权限也不大于 Windows 用户的权限。
另请注意,根据我的经验,没有必要为 xrdp
访问启动 dbus
,即使我已经看到说明是这样。当然,最终这将取决于您在 xrdp
会话中想要 运行 的内容。
祝大家阳光明媚! :D,
我有一个问题要问你们。我有以下 python“脚本”:
import os
os.system('ubuntu.exe')
在我的 WSL 上打开 Ubuntu 运行ning。现在,当 Ubuntu 终端出现时:
亲切的问候, 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
有机会分叉之前终止。 nohup
只是确保完整的 xrdp
初始化脚本在此之前有机会 运行。就其本身而言,这确实不是 WSL 问题。如果你用 exec sh -c "sudo service xrdp start"
.
其他一些注意事项。首先,这不需要密码,因为 WSL 没有“登录”的概念。 /init
进程(WSL 的 PID1 和初始化)负责为每个会话设置拥有用户。这不被视为安全风险,因为即使根 WSL 用户 运行 的权限也不大于 Windows 用户的权限。
另请注意,根据我的经验,没有必要为 xrdp
访问启动 dbus
,即使我已经看到说明是这样。当然,最终这将取决于您在 xrdp
会话中想要 运行 的内容。