
Я надеюсь, что вы можете мне помочь...
Я сделал скрипт perl и bash для создания резервной копии моих брандмауэров и передачи данных через tftp.
#!/bin/sh
perl /deploy/scripts/backups/10.160.23.1.pl > /dev/null 2>&1
perl /deploy/scripts/backups/10.160.23.2.pl > /dev/null 2>&1
Итак, это переносит файл в мой каталог tftp /tftpboot/
ls -l /tftpboot/
total 532
-rw-rw-rw- 1 tftp tftp 209977 jun 6 14:01 10.160.23.1_20140606.cfg
-rw-rw-rw- 1 tftp tftp 329548 jun 6 14:02 10.160.23.2_20140606.cfg
Мой вопрос в том, как улучшить мой скрипт для динамического перемещения этих файлов в другую папку на основе имени (в данном случае на основе IP-адреса)
например: 10.160.23.1_20140606.cfg переместить в /deploy/backups/10.160.23.1/
в том, что ответ на этот вопрос наверняка есть в Google, но хотелось бы узнать, есть ли конкретное решение для этого запроса, а также узнать, как это сделать :)
Спасибо!
решение1
Просто преобразуйте имя файла в пространство данных, затем манипулируйте им, чтобы извлечь нужную информацию, а затем используйте эту информацию.ПРИМЕЧАНИЕ:Для производства используйте более ограниченное соответствие файлов, чем/tftpboot/*.cfg
#!/bin/bash
for file in /tftpboot/*.cfg ; do
ipaddr=$( echo "$file" | cut -d/ -f3 | cut -d_ -f1 )
[ -d /deploy/backups/${ipaddr} || mkdir -p /deploy/backups/${ipaddr}
mv --verbose "$file" /deploy/backups/${ipaddr}/
done