![스크립트를 사용하여 파일을 편집하고 일부 변수 값을 바꿉니다.](https://linux55.com/image/138371/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%8E%B8%EC%A7%91%ED%95%98%EA%B3%A0%20%EC%9D%BC%EB%B6%80%20%EB%B3%80%EC%88%98%20%EA%B0%92%EC%9D%84%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
예를 들어 n개의 서버가 있습니다.
c0001234.cloud.com
c0005678.cloud.com
c0009123.cloud.com
이 서버에 로그인하고 파일을 편집하려면 스크립트를 작성해야 합니다. 기본적으로 파일에 변수가 있는데 값을 바꿔야 합니다. 서버에 성공적으로 로그인할 수 있지만 파일을 편집할 수 있습니다. 모든 서버의 파일을 편집하는 스크립트를 작성하는 방법. 파일 이름과 변수 이름은 모든 서버에서 동일합니다.
string2=c0001234.cloud.com,c0005678.cloud.com,c0009123.cloud.com
for j in $(echo $string2 | sed "s/,/ /g")
do
ssh -o StrictHostKeyChecking=no -tt -q AppAccount}@$j stty < /dev/null
????????????????????????
done
답변1
목적은 무엇입니까 stty < /dev/null
?
첫째, 쉼표를 구분 기호로 사용하지 말고 대신 공백을 사용하십시오. 이렇게 하면 나중에 루프가 단순화됩니다.
string2="c0001234.cloud.com c0005678.cloud.com c0009123.cloud.com"
for j in $string2; do
ssh -o StrictHostKeyChecking=no AppAccount@$j sed -i -e 's/var/value/g' file
done
이는 in var
으로 대체됩니다 .value
file