微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多站点 FTP 下载、Bash 脚本中的多个变量 - 函数、循环还是其他?

如何解决多站点 FTP 下载、Bash 脚本中的多个变量 - 函数、循环还是其他?

我尝试过搜索,但找不到我想要的确切内容,也许我什至不知道要搜索什么......

我需要从多个站点 FTP 各种 csv 文件,每个站点都有不同的凭据。 我可以使用以下方法一一执行此操作,但是我需要为 30 个站点执行此操作,并且不想复制粘贴所有这些内容

写这篇文章的最佳方式是什么,如果你能告诉我如何或给我指出一个很好的答案。

对于奖励积分(我可能不得不问一个单独的问题),mget 不能从 linux 到 linux,只能从 linux 到 windows。我也尝试过 curl 但也没有运气。

非常感谢。

附言不确定它是否有所作为,但我将每 15 分钟将此作为 cron 作业运行一次。我对那部分没问题;)

#!/bin/bash
chmod +x ftp.sh

#Windows site global variables
ROOT='/data'
PASSWD='passwd'

# Site 1
SITE='site1'
HOST='10.10.10.10'
USER='sitename1'

ftp -in $HOST <<EOF
user $USER $PASSWD
binary
cd "${ROOT}/${SITE}/"
lcd "/home/Downloads"
mget "${SITE}}.csv1" "${SITE}}.csv2"       #needs second "}" as part of file name
quit
EOF
echo "Site 1 FTP complete"

# Site 2
SITE='site2'
HOST='20.20.20.20'
USER='sitename2'

ftp -in $HOST <<EOF
user $USER $PASSWD
binary
cd "${ROOT}/${SITE}/"
lcd "/home/instrum/Downloads"
mget "${SITE}}.csv1" "${SITE}}.csv2"       #needs second "}" as part of file name
quit
EOF
echo "Site 2 FTP complete"

#Linux site Global variables
ROOT='/home/path'
USER='user'
PASSWD='passwd2'

#Site 3
SITE='site_3'
HOST='30.30.30.30'

ftp -in $HOST << EOF
user $USER $PASSWD
binary

cd "${ROOT}/${SITE}/"
lcd "/home/Downloads"
get "${SITE}file1.csv"             #mget not working for linux to linux FTP,don't kNow why.
get "${SITE}file2.csv"  
quit
EOF
echo "Site 3 FTP complete"

#Site 4
SITE='site_4'
HOST='40.40.40.40'

ftp -in $HOST << EOF
user $USER $PASSWD
binary

cd "${ROOT}/${SITE}/"
lcd "/home/Downloads"
get "${SITE}file1.csv"             #mget not working for linux to linux FTP,don't kNow why.
get "${SITE}file2.csv"  
quit
EOF
echo "Site 4 FTP complete"

解决方法

对于凭据,将其放入单独的文件中,其中包含站点 1 as、site1、host1、user1 和注释的变量,因此如果其他用户正在运行此脚本,该用户将能够快速理解这一点,并且也减少了修改文件密码和产生错误的机会。当您的主脚本加载时,您可以在运行主脚本之前加载带有密码的文件。

在您的主脚本中,如果所有站点的功能都相似,并且您始终要为所有 30 个站点运行相同的代码,那么您可以使用从 1 开始到 30 结束的 while 循环。您的代码修改变量、站点、主机和用户,在末尾插入数字,以使用正确的变量执行代码。

例如,如果这些服务器在您的网络上,则有用于复制文件的工具,例如 rsync 也很有效。如果你想看看

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。