需要创建一个ksh脚本用于在应用程序服务器和数据库服务器之间传输文件

需要创建一个ksh脚本用于在应用程序服务器和数据库服务器之间传输文件

我有一个要求,需要自动将特定文件从应用程序服务器中的一个位置传输到数据库服务器。

我可以使用这些步骤手动完成,但我需要在脚本中使用它

#! /bin/ksh

directory path where the file need to be

ftp (hostname of the application server)

 username

 password

file location in the apps server

get filename

quit

答案1

一些 FTP 客户端允许您在命令行上指定用户名和密码,我知道的两个是ncftplftp。然后,您可以使用单个非交互式命令来检索脚本内的文件。

答案2

我使用以下方法得到了它:

ftp -inv <<EOF
open app.server.address
user username password
cd some/location
get filename
bye
EOF

ftp -i选项关闭交互式提示并-n禁用自动登录以及用户名和密码提示。

答案3

如果您想避免在脚本本身中存储用户名和密码,您可以~/.netrc使用以下形式为目标主机创建一个条目:

machine <address>
login <username>
password <password>

<address>其中、<login>和分别替换<password> 为主机地址、用户名和密码。您还应该确保~/.netrc具有适当的权限(即只能由所有者读取和写入)。这种方法的优点是凭证存储在一个位置,可以从多个脚本访问。确保~/.netrc拥有适当的权限也比管理权限更容易全部可能需要使用凭据的脚本。

然后您可以继续ftp通过以下任一方式将命令传递给这里的文档或使用lftp可以-c选择将命令作为命令行参数传递。请注意,如果您选择前者,您应该不是指定-n选项 ,ftp因为这将禁用使用存储在 中的凭据自动登录~/.netrc

相关内容