Bash가 다음 운동을 어떻게 해결할 수 있는지 궁금합니다. 일부 IP 주소가 지적한 하나의 디렉토리에 구성 파일 세트가 있습니다. 예 :
conf1.txt
:
ip-addr: 192.168.1.2;
mask...;
gateway...;
another ip-addr: 192.168.1.5;
one more ip-addr: 192.168.1.10;
...
conf2.txt
:
ip-addr: 192.168.1.2;
mask...;
gateway...;
another ip-addr: 192.168.1.5;
one more ip-addr: 192.168.1.10;
...
질문은 다른 IP 주소 풀 (192.168.1.100-192.168.1.254)을 사용하여 모든 파일에서 모든 IP 주소를 어떻게 변경할 수 있는가입니다. 예를 들면 다음과 같습니다.
다음과 같은 하드 코딩 된 버전 때문에 한 배열에서 다른 배열로 값을 할당하는 메커니즘이 있다고 가정합니다.
sed "s/192.168.1.2/192.168.1.100/g";
좋지 않아.
새 IP를 자동 생성 하시겠습니까? 그렇다면 여기에 한 가지 방법이 있습니다.
conf_files=config*.txt
pre=192.168.1.
suf=100
grep -hoP '([0-9]{1,3}\.){3}[0-9]{1,3}' $conf_files |
sort -u |
while read ip; do
if (( suf > 254 )); then
print "Error: Oops! Suffix is more than 254" >&2
exit 1
fi
sed -i "s:$ip:$pre$suf:g" $conf_files
((suf++))
done
작동 방식은 다음과 같습니다.
sed
이전 IP를 대체하는 데 사용이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다