2014-12-02 13 views
-1

我試圖通過構建腳本來自動化與Git的交互。git獲取和重新綁定的bash腳本

我想

  1. 與.PEM Amazon實例連接文件

  2. 從Ubuntu的實例

運行Git命令我在shell編程一個beginer 。我可以給一個嘗試做它喜歡

#!/bin/bash 
GIT_REPO='git_repo' 
BRANCH='branch' 
ssh -i ~/Downloads/4EBDBInstance.pem [email protected] 
cd $GIT_REPO 
git fetch -a 
git checkout $BRANCH 
git rebase origin/$BRANCH 

我得到了一個錯誤

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
@   WARNING: UNPROTECTED PRIVATE KEY FILE!   @ 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
Permissions 0644 for '/PATH/Instance_key.pem' are too open. 
It is required that your private key files are NOT accessible by others. 
This private key will be ignored. 
bad permissions: ignore key: PATH/Instance_key.pem 
Permission denied (publickey). 

其實我試圖執行以下UNIX在bash文件

$sudo ssh -i PATH/instance_key.pem [email protected] 
$cd git_repo 
$git fetch -a 
$git checkout master 
$git rebase origin/master 

(note:- need to inform with a message if any conflicts occurs and continue) 

$sudo ssh -i PATH/instance_key.pem [email protected] 
$cd git_repo 
$git fetch -a 
$git checkout release 
$git rebase origin/release 

(note:- need to inform with a message if any conflicts occurs) 

任何幫助的命令執行它

+0

殼體分配在等號周圍不能有空格。所以'GIT_REPO ='git_repo''需要'GIT_REPO = git_repo'(在這種情況下引號不需要)。 – 2014-12-02 14:31:18

+0

來自ssh的錯誤正是它所說的。 '/ PATH/Instance_key.pem'上的權限太開放了。你需要修復它們。 – 2014-12-02 14:32:04

+0

修正密鑰文件的權限,就像警告所說的那樣。另外,在一個腳本中運行'ssh'後跟一堆命令不會*意味着在服務器上運行這些命令。 – Biffen 2014-12-02 14:32:30

回答

2

ssh將讀取其標準輸入以運行命令。您可以使用定界符:

ssh -i ~/Downloads/4EBDBInstance.pem [email protected] <<END 
cd $GIT_REPO 
git fetch -a 
git checkout $BRANCH 
git rebase origin/$BRANCH 
END 
+0

它沒有幫助。 「僞終端將不會分配,因爲stdin不是終端 無法建立主機'122.248.238.32(122.248.238.32)'的真實性 RSA密鑰指紋是3d:77 :2b:15:bf:99:4f:0b:03:6f:1d:ff:1a:54:7d:95。 您確定要繼續連接(是/否)嗎? '或'否':是 警告:將「122.248.238.32」(RSA)永久添加到已知主機列表中。「 – ManikandanV 2014-12-03 05:21:02

+0

試試'ssh -t -i ...' – 2014-12-03 11:55:15

+0

警告:標識文件...不可訪問:沒有這樣的文件或目錄。 ssh:無法解析主機名/Users/faizalmohammed/Downloads/4EBDBInstance.pem:提供的節點名稱或服務名稱,或未知的 – ManikandanV 2014-12-23 07:57:16

2

給予400權限到您的Amazon鍵,然後嘗試

GIT_REPO='git_repo' 
BRANCH='branch' 
ssh -i ~/Downloads/4EBDBInstance.pem [email protected] "cd $GIT_REPO && git stash && git checkout $BRANCH && git fetch -a && git rebase origin/$BRANCH" 

它將連接的實例,並從那裏本身運行這些命令。