2014-12-02 2 views
-1

Я пытаюсь автоматизировать мои взаимодействия с Git, создавая скрипт.bash script для git fetch и rebase

Я хочу

  1. соединиться с амазонки, например с .pem файл

  2. запускать команды Git из этого Ubuntu экземпляра

Я 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 в Баш файле

$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' (в этом случае также не нужны кавычки). –

+0

Эта ошибка от ssh - это именно то, что она говорит. Разрешения на '/ PATH/Instance_key.pem' слишком открыты. Вам нужно их исправить. –

+0

Исправьте права доступа к ключевому файлу, как указано в предупреждении. Кроме того, запуск 'ssh' в скрипте, сопровождаемый множеством команд, делает * not * означающим запуск этих команд на сервере. – Biffen

ответ

2

ssh будет читать свой stdin для запуска команд. Вы можете использовать Heredoc:

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. Вы действительно хотите продолжить соединение (да/нет)? Y Введите «да» 'или' no ': yes Предупреждение: Постоянно добавлено «122.248.238.32» (RSA) в список известных хостов ». – ManikandanV

+0

Попробуйте 'ssh -t -i ...' –

+0

Предупреждение: файл удостоверения ... недоступен: нет такого файла или каталога. ssh: Не удалось разрешить имя хоста /Users/faizalmohammed/Downloads/4EBDBInstance.pem: nodename или servname предоставлено или неизвестно – ManikandanV

2

Дайте 400 разрешения на вашу амазонки ключ, а затем попробуйте

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" 

Он соединит экземпляр и выполнять эти команды оттуда сам.