我在我的树莓派上运行一个 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 运行。
