从不同目录运行时,SFTP 脚本会获得不同的目标响应

从不同目录运行时,SFTP 脚本会获得不同的目标响应

我对 SFTP shell 脚本感到困惑,任何帮助都将不胜感激。我编写了一个 sftp 脚本来连接银行网站并将 ACH 信息上传到银行网站。该脚本使用“expect”等待远程站点的响应。该脚本在 RedHat 服务器(版本 5.11)上运行。

如果我从我的主目录或临时目录运行此脚本,远程主机将使用“密码:”响应登录,并且我的 SFTP 脚本正常运行。如果我从专门用于存储 CRON 使用的 shell 脚本的目录运行此脚本,远程服务器将使用“输入密钥‘/prod/apps/xxxxxx/batchjobs/ACRO_privatessh’的密码”响应,并且我的 SFTP 脚本挂起,因为预期的响应与远程服务器发送的响应不匹配。

除了运行脚本的目录之外,所有其他部分都保持不变。这包括权限、所有权和执行脚本的用户 ID。换句话说,我可以从批处理作业目录执行脚本,由于服务器响应“错误”,脚本会挂起。然后,我可以将该脚本复制到我的主目录,脚本会执行并完成,因为服务器响应“正确”。

在此先感谢您的帮助。

-担

答案1

当您从主目录、临时目录或其他地方运行脚本时,$SFTPKEY 的内容无效(即:未指向有效私钥),因此不会被使用。当您从其“常用”主目录运行脚本时,脚本会找到/prod/apps/xxxxxx/batchjobs/ACRO_privatessh并尝试使用它。 "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )输出目录的名称脚本所在的位置。

您有以下几种选择:

  • 使用密钥,可以通过修改脚本来允许您输入密钥的密码;或者通过使用 ssh-agent;或者通过使用无密码密钥。
  • 从脚本中删除对 $SFTPKEY 的引用

相关内容