Я сбит с толку сценарием оболочки SFTP, и любая помощь будет принята с благодарностью. Я написал сценарий sftp для подключения и загрузки информации ACH на сайт банка. Сценарий использует "ожидать", чтобы дождаться ответов от удаленного сайта. Скрипт работает на сервере RedHat версии 5.11.
Если я запускаю этот сценарий из моего домашнего каталога или из моего временного каталога, удаленный хост отвечает на логин с помощью «Пароль:», и мой сценарий SFTP работает нормально. Если я запустил этот сценарий из каталога, предназначенного для хранения сценариев оболочки, используемых CRON, удаленный сервер ответит «Введите кодовую фразу для ключа '/ prod / apps / xxxxxx / batchjobs / ACRO_privatessh'», и мой сценарий SFTP зависнет, поскольку ожидаемый ответ не соответствует тому, что отправлено с удаленного сервера.
Все остальные части, кроме каталога, из которого запускается скрипт, остаются прежними. Сюда входят разрешения, права собственности и идентификатор пользователя, который выполняет сценарий. Другими словами, я могу выполнить сценарий из каталога наших пакетных заданий, где он зависает, потому что ответ сервера «неправильный». Затем я могу скопировать этот сценарий в свой домашний каталог, и сценарий будет выполнен и завершится, потому что ответ сервера «правильный».
Заранее благодарю за любую помощь.
-Дэн
Когда вы запускаете сценарий из домашнего каталога, временного каталога или где-либо еще, содержимое $ SFTPKEY недействительно (читай: не указывает на действительный приватный ключ) и поэтому не используется. Когда вы запускаете его из "обычного" дома, скрипт находит /prod/apps/xxxxxx/batchjobs/ACRO_privatessh
и пытается его использовать. "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
выводит имя каталога в котором находится скрипт.
У вас есть несколько вариантов: