gpt4 book ai didi

Python 在 sudo 中调用 bash 脚本的子进程

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:29 24 4
gpt4 key购买 nike

我在我的树莓派上运行一个 python 脚本。我必须在 sudo 中运行它才能使用 rpi.gpio 库,但是当我这样做时,它不会让我在非 sudo 中运行我的 bash 脚本。这会导致我的 ssh 命令提示输入密码,即使设置了 key 生成身份验证。

我确信我遗漏了一些简单的东西。谁能帮忙?

运行 python 脚本:

sudo python ./runcam.py

在我运行的 py 脚本中:

subprocess.call("./runit", shell=True)

还有我的 ssh 脚本:

#!/bin/bash

FNAME=`date +'%H-%M-%S-%m%d%Y'`

ssh pi@192.168.0.8 '
mkdir $FNAME
' &

ssh pi@192.168.0.9 '
mkdir $FNAME
' &

最佳答案

您还可以使用 sudo 删除您的 root 权限。您只需要检查用户 ID 0 和环境变量“SUDO_USER”,然后是 sudo -u "$SUDO_USER"命令

您可以像这样在 bash 脚本中执行此操作:

# if we're root from sudo, run this script as the original user instead
[[ "$(id -u)" = "0" && -n "${SUDO_USER:-}" ]] && exec sudo -u "$SUDO_USER" "$0" "$@"

完整脚本示例:

#!/bin/bash -u
[[ "$(id -u)" = "0" && -n "${SUDO_USER:-}" ]] && exec sudo -u "$SUDO_USER" "$0" "$@"
id -u

此脚本将打印您的 用户 ID,无论它是否使用 sudo 运行。

关于Python 在 sudo 中调用 bash 脚本的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com