LINUX.ORG.RU
решено ФорумAdmin

Проблема с bash скриптом


0

1

Здравствуйте. Подскажите, пожалуйста решение для скрипта.

Имеется несколько фтп серверов, надо с них забирать файл config.ini ( присутствует на каждом сервере ) и переименовывать его в $servername.config.ini Адреса, пароли и логины есть в файле database. вот пример его структуры:

admin:1234@192.168.0.1
admin:1234@192.168.0.2
admin:1234@192.168.0.3

Также есть файл с именами серверов (server_name). с такой структурой;

ftp1
ftp2
ftp3

Каждое имя сервера в строке соответствует его ip адресу в файле database.

Файлы я забираю таким скриптом:

#!/bin/bash
for FTP_ADDR in `cat /root/jaels/scripts/base`
do
    wget ftp://$FTP_ADDR/config.ini
done

Но проблема в том, что скрипт забирая файл с 1-го фтп, сразу переходит к второму и заменяет уже полученный config.ini на config.ini с друго ФТП.

Собственно надо реализовать переименовывание файла сразу после получения (добавлять к нему имя сервера, которое берется из файла server_name. )



Последнее исправление: Jaels (всего исправлений: 4)

Jaels> wget ftp://$FTP_ADDR/config.ini

wget ftp://$FTP_ADDR/config.ini -O $servername.config.ini

или

man mv

sdio ★★★★★
()
#!/bin/bash
i=0
while read FTP_ADDR
do
    ((i++))
    SRV="$(sed -n ${i}p /путь/к/server_name)"
    wget -O"${SRV}.config.ini" ftp://$FTP_ADDR/config.ini
done < /root/jaels/scripts/base
AITap ★★★★★
()
Ответ на: комментарий от Jaels

ну почитайте. можете мою книжку. Для такой задачи ИМХО скрипт не нужен - можно одной строчкой.

$ sed 'R server_name' server_name1 | sed -r 'N;s~(.*)\n(.*)~wget -O "\2.config.ini" "ftp://\1/config.ini"~'
wget -O "ftp1.config.ini" "ftp://admin:1234@192.168.0.1/config.ini"
wget -O "ftp2.config.ini" "ftp://admin:1234@192.168.0.2/config.ini"
wget -O "ftp3.config.ini" "ftp://admin:1234@192.168.0.3/config.ini"

(для запуска после последней ~ нужно поставить «e»)

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.