Проблема при выполнении следующего куска кода. Скрипт запускается от обычного текущего пользователя:
#!/bin/bash
hostIp="192.168.150.101"
userPwd="12345"
echo "Настройка хоста $hostIp"
command="sshpass -p '$userPwd' ssh-copy-id -i ~/.ssh/id_rsa.pub user@$hostIp"
echo "Выполняется команда:"
echo "$command"
$command
При запуске этого когда, в консоли видим следующую ошибку:
Настройка хоста 192.168.150.101
Выполняется команда:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101
/usr/bin/ssh-copy-id: ERROR: failed to open ID file '~/.ssh/id_rsa.pub': Нет такого файла или каталога
Но дело в том, что, файл открытого ключа существует. Мало того, если в консоли скопировать «сконструированную» скриптом команду, и выполнить ее:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101
то эта команда выполнится без проблем, и ключ будет прописан на удаленной машине.
Вопрос: почему не выполняется команда внутри скрипта? При этом почему она нормально выполняется в консоли?