Несколько FTP-загрузок с сайта, несколько переменных в сценарии Bash - функция, цикл или что-то еще?
Я пробовал искать, но не могу найти именно то, что мне нужно, и, возможно, я даже точно не знаю, что искать ...
Мне нужно отправить по FTP различные файлы CSV с нескольких сайтов, каждый с разными учетными данными. Я могу сделать это один за другим со следующим, однако мне нужно сделать это для 30 сайтов, и я не хочу копировать и вставлять все это.
Как лучше всего это написать, и если вы можете показать мне, как или указать мне ответ, это было бы здорово.
А для бонусных баллов (мне, возможно, придется задать отдельный вопрос), mget не работает с linux на linux, только с linux на windows. Я тоже пробовал завивать, но тоже не повезло.
Большое спасибо.
ps не уверен, имеет ли это значение, но я буду запускать это как задание cron каждые 15 минут. Я в порядке с этой частью;)
#!/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 ответ
Для учетных данных поместите их в отдельный файл с переменными для сайта 1 as, site1, host1, user1 и комментариями, чтобы, если другой пользователь запускает этот сценарий, пользователь мог бы понять это быстро, а также за меньшие деньги. шанс изменить пароли в файле и создать ошибку. Когда ваш основной скрипт загрузится, вы можете загрузить файл с паролями перед запуском основного скрипта.
В вашем основном скрипте, если функциональность одинакова на всех сайтах, и вы всегда собираетесь запускать один и тот же код для всех 30 сайтов, вы можете использовать цикл while, начиная с 1 и заканчивая 30. В вашем коде исправьте переменные site, host и user, чтобы вставить число в конце, чтобы выполнить код с правильными переменными.
Существуют инструменты для копирования файлов, например, если эти серверы находятся в вашей сети, например rsync, который также эффективен. Если вы хотите взглянуть