На самом деле, "dirname 0$" получит Вас путь к сценарию, но необходимо интерпретировать его немного:
$ cat bash0
#!/bin/bash
echo \$0=$0
dirname $0
$ bash0 # "." appears in PATH right now.
$0=./bash0
.
$ ./bash0
$0=./bash0
.
$ $PWD/bash0
$0=/home/00/bediger/src/ksh/bash0
/home/00/bediger/src/ksh
$ $PWD/../ksh/bash0
$0=/home/00/bediger/src/ksh/../ksh/bash0
/home/00/bediger/src/ksh/../ksh
$ ../ksh/bash0
$0=../ksh/bash0
../ksh
Необходимо подготовиться обрабатывать "." как имя каталога при некоторых общих обстоятельствах. Я экспериментировал бы немного, поскольку я помню dirname встроенное к ksh выполнение вещей немного по-другому, когда"." появляется в ПУТИ.
Добавьте следующее к Вашему ~/.ssh/config
файл:
Host github.com
StrictHostKeyChecking no
Что-либо с помощью открытого-ssh клиента для установления удаленной оболочки (с клиентом мерзавца делает) должно пропустить ключевые проверки на github.com.
Это - на самом деле плохая идея начиная с любой формы пропуска проверок (поражаете ли Вы автоматически да или пропускаете проверку во-первых), создает комнату для человека в среднем компромиссе безопасности. Лучший путь состоял бы в том, чтобы получить и проверить цифровой отпечаток и сохранить его в known_hosts
файл прежде, чем должным быть запустить некоторый скрипт, который автоматически соединяется.
yes
выводы y
. Приемные потребности ключа RSA yes
. Вы могли попробовать yes yes | git clone git@github.com:repo/repoo.git
так yes
выводы yes
вместо y
.
echo "yes" | ...
не делает. Я думаю git
не принимает передачу по каналу. Возможно, только в некоторой версии?
– udondan
16.02.2015, 12:19
Я столкнулся с этой проблемой прежде. Хотя это было на машине Windows, но мы должны были использовать ssh для соединения с удаленным хостом. Мы столкнулись с той же проблемой, которую всегда приводило к сбою первое подключение, потому что это не распознает ключи.
Я решил его путем соединения вручную и нахождения ключа реестра и импорта его в начале сценария. В Linux это должно быть то же общее представление: Вы хотите добавить этот сервер к списку доверяемых хостов так, чтобы ssh не спрашивал Вас при доверии ему каждый раз.
После того как Вы соединяетесь вручную, найдите файл ключей и добавьте его к своему known_hosts файлу. Этот путь ssh просмотрит тот файл, предположит, что Вы знаете то, что Вы делаете и продолжаете двигаться, не спрашивая Вас о цифровом отпечатке.
Запуск ssh-keyscan -H github. com >> ~ / .ssh / known_hosts
перед клонированием добавит ключ и предотвратит появление запроса.
Конечно, этот подход также уязвим для атаки MITM.
known_hosts
файл прежде. – Gilles 'SO- stop being evil' 17.08.2011, 02:27