스크립트를 사용하여 기존 값을 기반으로 /etc/pam.d/common-session 파일을 수정하고 싶습니다.
session required pam_mkhomedir.so
존재하는 경우 추가하십시오.skel=/etc/skel/ umask=0022
- 존재하지 않는 경우 전체 줄을 추가하십시오.
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
- 주석(#)이 있으면 주석을 해제하고 규칙 1과 2를 적용합니다.
쉘 스크립트를 사용하여 이를 달성하는 가장 쉬운 방법은 무엇입니까?
답변1
이것이 GNU 솔루션입니다 sed
. 이것이 가장 간단한지는 모르겠지만 논리를 약간 단순화했습니다.
#!/bin/bash
if [[ $(grep "session required pam_mkhomedir.so" $1) ]]
then $(sed -i 's/#\?session required pam_mkhomedir\.so.*/session required pam_mkhomedir.so skel=\/etc\/skel\/ umask=0022/' $1)
else $(sed -i '$ a session required pam_mkhomedir.so skel=/etc/skel/ umask=0022' $1)
fi
포함하는 줄을 session required pam_mkhomedir.so
line 으로 변경합니다 session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
. 이는 #\?
행이 주석 처리되고(0 또는 1 #) skel 및 umask 옵션이 지정되지 않은 경우를 포함합니다.
그렇지 않고 해당 줄이 없으면 해당 줄이 session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
파일 끝에 추가됩니다.
./script.sh /etc/pam.d/common-session
$1
파일 경로를 변경하면 매개변수를 사용하거나 사용하지 않고 스크립트를 호출할 수 있습니다.