SSH работает в терминале, но не в сценарии оболочки - PullRequest
2 голосов
/ 16 марта 2012

Я пытаюсь выполнить скрипт, который я загрузил в экземпляр AWS.Если я запускаю следующую команду в моем терминале MacBook, она завершается успешно:

ssh -o StrictHostKeyChecking=no -i ~/.ec2/my.pem ec2-user@ec2-<address>.amazonaws.com "chmod u+x ./myScript.sh"

Я перенес эту же команду в простой сценарий оболочки на моем локальном компьютере, где я передаю информацию:

#!/bin/sh
# myLocalScript.sh

host=$1
pem=$2
fileName=$3

ssh -o StrictHostKeyChecking=no -i $pemkey ec2-user@$host "chmod u+x ./$fileName"

Когда я запускаю его с помощью этой команды:

sh myLocalScript.sh ec2-user@ec2-<address>.amazonaws.com ~/.ec2/my.pem myScript.sh

Я получаю следующую ошибку:

Warning: Identity file ec2-user@ec2-<address>.amazonaws.com not accessible: No such file or directory.
ssh: Could not resolve hostname chmod u+x ./myScript.sh: nodename nor servname provided, or not known

Что я делаю не так?

1 Ответ

5 голосов
/ 16 марта 2012

Вам нужно $pem, а не $pemkey.

Кроме того, вы должны привыкнуть к двойным кавычкам, за исключением очень особых ситуаций, когда вы действительно хотите, чтобы пустая переменная «исчезала».

...