저는 Linux를 사용할 때 많은 구성 파일을 다루며, 설정 프로세스를 자동화하는 것을 좋아하기 때문에 자동화된 쉘 스크립트 생성을 활용합니다.
여러 줄의 코드를 파일 끝에 함께 구체적으로 추가하는 빠르고 효율적인 방법을 찾고 싶지만 코드 줄이 전체적으로 함께 존재하는지 확인하고 있으면 건너뜁니다. 스크립트를 계속 다시 실행한다면 반복되는 텍스트 블록이 파일에 계속해서 추가되는 것을 원하지 않습니다.
예를 들어, 저는 최근 SSH 키만 엄격하게 허용하고 비밀번호 사용을 방지하도록 OpenSSH를 구성했습니다. 그러나 이제 사용하고 싶습니다.성냥옵션을 사용하면 특정 IP 주소 서브넷에서만 비밀번호를 사용할 수 있습니다. 다음 줄을 추가하고 싶습니다./etc/ssh/sshd_config문서:
Match Address 192.168.0.0/16
PasswordAuthentication yes
PermitRootLogin yes
이러한 코드 줄이 이미 존재하는 경우 해당 텍스트 블록이 구성 파일 전체에 존재하는지 어떻게 확인합니까?
grep을 사용하여 단일 문자열을 검색할 수 있지만비밀번호 인증그리고루트 사용자 로그인 허용매개변수는 일치 옵션에 따라 달라집니다.
grep -qxF 'PasswordAuthentication yes' "/etc/ssh/sshd_config" || echo "PasswordAuthentication yes" >> "/etc/ssh/sshd_config"
저는 Linux를 처음 접했을 때 구성 파일을 백업하고 전체 heredocs를 해당 파일에 저장했습니다. 분명히 구성 파일은 항상 필요한 것으로 덮어쓰기되고 원본 파일은 안전하기 때문에 필요한 만큼 여러 번 이 작업을 수행할 수 있습니다.