2012-08-24 47 views
0

我有各種腳本,我想提供給其他幾個人使用他們自己的帳戶。我將這些腳本保存在github庫中。存儲或不存儲特定的行github上的文件

比方說,我有一個bash腳本通過ssh到計算機:

username=crzyuser123 
ssh -XY [email protected] 

現在我沒瘋,我不儲存我的密碼在腳本(使用RSA酒吧/私鑰),但讓我們說,這是一個非常方便的腳本,我一直使用和更新,而其他人也一直在使用(但他們顯然有不同的用戶名)。

我想要做的就是說,「git pull,然後在文件中編輯這一行,以便您的用戶名在那裏,然後忘記它!」每次他們拉動更新他們的回購時,它都會保持不變。

他們當然可以在每次更新回購時更新這一行,但這似乎是一個巨大的痛苦。我也需要以不太困難的方式傳達任何解決方案。

對於所有涉及到這種情況最簡單的最佳做法是什麼?

回答

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 

這允許自動運行腳本(假設當前用戶相同的用戶名超級計算機)。如果有人需要輸入不同的用戶名,腳本將採用該用戶名。

0

一個可能的解決

建立一個新的賬戶,說「JDOE」在機器上。把你的公鑰放在/home/jdoe/.ssh/authorized_keys中,並在任何適合的地方粘貼回購(或克隆)。將使用腳本的每個用戶的公用密鑰添加到腳本中的相同authorized_keys文件和硬編碼jdoe

有更清潔的解決方案,但這可能是獲得您想要的最快方法。

編輯:如果它是github你需要授予他們訪問權限,你可能需要建立一個組織或讓他們專門爲github生成密鑰對。仍然是在正確的位置添加他們的pubkeys的問題。

+0

看到變得棘手。 「特殊計算機」實際上是大約30臺計算機中的一臺 - 在運行時以一種明智的方式(如每次運行時可以是其中的任何一種)在腳本中選擇。腳本是將該用戶登錄到該計算機上,而不是作爲jdoe或其他用戶登錄。 – JBWhitmore

+0

那麼,這改變了事情。也許你可以添加一個文件,比如「settings.tmpl.sh」,這個文件有一個用戶名或者文件內容以及指令填寫的地方,將它複製到「settings.sh」或者什麼都不是,還可以把「settings .sh「in .gitignore ...或類似的東西。 – jeremiahd

+0

呃,我忘了提到在你的腳本中提供設置文件。 – jeremiahd

0

最好的做法是不要將用戶名/密碼存儲在文件中。將這些值作爲參數傳遞給腳本。或者從配置文件讀取它們。但從來沒有硬編碼這樣的事情擺在首位。即使它只是「一個shell腳本」。

如果您將它們作爲參數傳遞,誰曾經想要使用您的腳本,可以將其自己的腳本包裝到腳本中,並使用相應的參數調用腳本,也可以手動傳遞參數。

使用配置文件,每個人都可以擁有一個合適的配置文件,但他並未承諾回購。