【问题标题】:Multiple site FTP downloads, multiple variables in Bash script - function, loop or other?多个站点 FTP 下载,Bash 脚本中的多个变量 - 函数、循环还是其他?
【发布时间】:2021-07-02 22:28:47
【问题描述】:

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

我需要 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"

【问题讨论】:

    标签: bash function loops ftp mget


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2021-02-13
      • 2018-10-13
      • 2018-02-15
      • 2013-03-10
      • 2012-10-14
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多