Назад | Перейти на главную страницу

Сценарий SFTP получает другой ответ назначения при запуске из разных каталогов

Я сбит с толку сценарием оболочки 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 ) выводит имя каталога в котором находится скрипт.

У вас есть несколько вариантов:

  • используйте ключ, либо изменив сценарий, чтобы можно было ввести пароль ключа; или с помощью ssh-agent; или с помощью ключа без пароля.
  • удалить ссылки на $ SFTPKEY из скрипта