
당신이 나를 도울 수 있기를 바랍니다 ...
방화벽을 백업하고 tftp를 통해 전송하기 위해 Perl 및 bash 스크립트를 만들었습니다.
#!/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