0

我有各种脚本,我想让其他几个人可以在他们自己的帐户中使用这些脚本。我将这些脚本保存在 github 存储库中。

假设我有一个 bash 脚本可以通过 ssh 进入计算机:

username=crzyuser123
ssh -XY $username@specialcomputer.com

现在我不疯了,我不会在脚本中存储我的密码(使用 rsa pub/private 密钥),但可以说这是一个非常方便的脚本,我一直在使用和更新,其他人也都使用时间(但他们显然有不同的用户名)。

我想做的是说,“git pull,然后编辑文件中的这一行,这样你的用户名就在那里,然后忘记它!” 并且每次他们 git pull 更新他们的仓库时,它都会使该行保持不变。

当然,他们可以在每次更新存储库时更新这一行,但这似乎是一个巨大的痛苦。我还需要以不太困难的方式传达任何解决方案。

使所有相关人员都能轻松应对这种情况的最佳做法是什么?

4

3 回答 3

0

我想出了一种不将用户名存储在 bash 脚本中的方法。这是我实施的 bash 解决方案:

# If an argument is passed, set as supercomputer username
if [ $# -eq 1 ]
then
  username=$1
# Else, use the current username as the supercomputer username
else
  username=$LOGNAME
fi

这允许脚本自动运行(假设当前用户与超级计算机用户名相同)。如果有人需要输入不同的用户名,脚本将采用该用户名。

于 2012-08-25T14:10:47.837 回答
0

一种可能的解决方案

设置一个新帐户,在机器上说“jdoe”。将您的公钥放入 中/home/jdoe/.ssh/authorized_keys,并将 repo(或克隆)粘贴到任何合适的地方。将使用您的脚本的每个用户的公钥添加到同一authorized_keys文件中,并jdoe在脚本中进行硬编码。

有更清洁的解决方案,但这可能是获得您想要的最快的方法。

编辑:如果您需要授予他们访问权限的 github,您可能需要建立一个组织或让他们专门为 github 生成一个密钥对。仍然是在正确的位置添加他们的公钥的问题。

于 2012-08-24T03:13:23.283 回答
0

最佳做法是根本不将用户名/密码存储在文件中。将这些值作为参数传递给您的脚本。或者从配置文件中读取它们。但从一开始就永远不要对这些东西进行硬编码。即使它“只是一个 shell 脚本”。

如果您将它们作为参数传递,那么想要使用您的脚本的人可以将他自己的脚本包装在它周围,使用适当的参数调用您的脚本,或者手动传递参数。

使用配置文件,每个人都可以拥有一个他不提交到 repo 的适当配置文件。

于 2012-08-24T08:44:39.890 回答