【问题标题】:Cannot automatically push commits from script无法从脚本自动推送提交
【发布时间】:2021-07-18 16:23:48
【问题描述】:

每当我对树莓派 3B 中的本地存储库进行更改时,我使用以下脚本 (autoupdate.sh) 使用 SSH 自动更新我的 git 存储库。

#!/usr/bin/env bash

DATADIR="/home/pi/data"
cd $DATADIR

if [[ -n $(git status -s) ]]; then
    echo "Changed found. Pushing changes..."
    git add -A && git commit -m "$1: Update files" && git push origin main
else
    echo "No changes found. Skip pushing."
fi

然后我调用一个脚本measurement.sh,它在连接互联网时调用上述脚本(我使用了 4G 加密狗 USB)。类似的东西

...    
cd ~/data; bash autoupdate.sh $DATE
...

但是,当我运行sudo bash measurement.sh 时,它遇到了错误(它已提交但未推送)。没有 sudo 它可以正常工作。

Permission denied(public key)
...

我通过重新生成 ssh 密钥并验证了公钥从 GitHub 文档 https://docs.github.com/en/github/authenticating-to-github/troubleshooting-ssh/error-permission-denied-publickey 进行了检查,但它根本没有解决。当我在单独的终端中推送提交时,它可以正常工作,所以我认为问题与 SSH 密钥无关。我怀疑要使用 sudo 成功运行脚本,首先还必须使用 sudo 生成 SSH 密钥生成器。

这可能是什么原因?

【问题讨论】:

标签: linux bash git github ssh


【解决方案1】:

没有 sudo 可以正常工作。

那么为什么首先使用sudo
如评论所述,单独使用sudo 意味着将命令用作root
至少,sudo -u <auser> 意味着cd ~/data 中的~ 将由适当的/home/auser 解析,而不是/root

【讨论】:

  • 你好,因为我需要写入一些它的所有者是 root 的日志文件。但是,我现在可以将这些日志文件的所有者更改为当前用户。
  • @CoffeePlease 确实更容易更改所有权。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多