Bash에서 줄 끝에 항목을 추가하는 방법

Bash에서 줄 끝에 항목을 추가하는 방법

sudoers 파일이 있고 줄 끝에 /usr/sbin/ifconfig를 추가하려고 합니다. 그래서 제가 이루고 싶은 것은 다음과 같습니다.

devops  ALL=(root) NOPASSWD: /usr/sbin/ifconfig, /usr/sbin/ethtool, /usr/sbin/hwclock

나는 실행하려고 :

echo "/usr/sbin/ifconfig" | ssh $i "tee -a /etc/sudoers.d/dev_ops" 

하지만 다른 행만 생성되지만 중복 행은 필요하지 않습니다.

답변1

devops에 대한 NOPASSWD 액세스를 제공하는 줄이 있는지 확인하려면 /etc/sudoers.d/dev_ops다음을 고려하세요./usr/sbin/ifconfig

grep -q '^devops.*NOPASSWD:.*/usr/sbin/ifconfig' /etc/sudoers.d/dev_ops || 
  ed -s /etc/sudoers.d/dev_ops <<< $'/^devops.*NOPASSWD:/ s!$!, /usr/sbin/ifconfig!\nw\nq'

목적은 "devops"로 시작하고 "NOPASSWD:" 문자열과 "/usr/sbin/ifconfig" 문자열이 같은 줄 어딘가에 포함된 문자열을 찾는 것입니다. 문자열이 그렇다면아니요파일에 있는 경우 ed"devops"로 시작하고 그 뒤에 문자열 "NOPASSWD:"가 오는 (가정) 줄을 찾아 해당 줄의 끝을 ",/usr/sbin/으로 바꿉니다. ifconfig"를 입력한 후 저장하고 종료합니다. /etc/sudoers.d/dev_ops정규식 "^devops.*NOPASSWD:"와 일치하는 줄이 없으면 이 작업은 실패합니다. - ?from 을 받게 되며 ed변경 사항이 적용되지 않습니다.

관련 정보