Не уверен, что это дублированный вопрос, но я действительно не могу найти решение моей проблемы.SSH для скрипта Bash (SSH-Agent)
Проблема в том, что я не могу выполнить следующую команду.
#!/bin/bash
SCRIPT1="cd /path/to/project;"
SCRIPT2="git pull;"
ssh "production" ${SCRIPT1} "ssh-agent /bin/bash; ssh-add ~/.ssh/my_bitbucket_key;" ${SCRIPT2}
Все еще новичок в bash и ssh, поэтому я не уверен, что если это правильный способ сделать это.
Надеюсь, вы можете мне помочь. Благодаря!
ли командную работу для кого-то другого но не для вас, или он никогда не работал ни для кого? Если это просто не работает для вас, какое сообщение об ошибке вы получаете? Если это не сработало ни для кого, я бы поставил обе строки $ SCRIPT1 и $ SCRIPT2 в двойные кавычки команды ssh. – Mort
измените первую строку на '#!/Bin/bash -vx', чтобы увидеть замену переменных, как это происходит в каждом cmd. Я думаю, вы увидите проблему. Не путайте, что все строки теперь одинарны в строках, начинающихся с '+'. Именно так отладчик «нормализует» свои входы. Удачи. – shellter
В стороне, ставя дистанционные команды в переменных, это сомнительная практика. Возможно, вместо этого создайте функцию, которая запускает свой аргумент в удаленной оболочке, например 'prod 'cd/path/to/project; git pull', где' prod' может быть чем-то вроде 'prod() {ssh production ssh-agent bash -c msgstr "ssh-add ~/.ssh/my_bitbucket_key; $ @ ";}' – tripleee