Linux 명령어/Linux
Linux Bash- Linux ADD User (조건에 맞는 텍스트 아래에 원하는 텍스트 삽입하기)
Camouflage129
2020. 10. 19. 16:29
기본적으로 Sed명령어를 통해 원하는 파일에 스트링을 입력하거나 지울 수 있다.
예시를 통해 알아보도록 하자.
sed -i 옵션을 주면 해당파일에 수정된 내역을 반영하겠다는 뜻으로 Linux User를 만들때,
아래와 같은 스크립트를 통해 유저를 쉽게 추가할 수 있다.
#!/bin/bash
check_expect=$(rpm -qa | grep expect)
if [ -z "$check_expect" ];
then sudo yum install -y expect
fi
root_pw=$1
id=$2
pw=$3
sudo userdel $id
sudo adduser $id
expect << EOF
spawn sudo passwd $id
expect "*password*"
send "$root_pw\r";
expect "New password:"
send "$pw\r";
expect "Retype new password:"
send "$pw\r";
expect eof
EOF
num=$(sudo grep -n "## Allow root" /etc/sudoers | cut -d: -f1 | head -1)
num=$((num+1))
data=$(sudo cat /etc/sudoers | sed -n ${num}p)
data2=$(echo ${data} | sed -e "s/root/${1}/g")
sudo sed -i "${num}s/${data}/${data}\n${data2}/g" /etc/sudoers
sudo sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sudo service sshd restart
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date
먼저 위의 스크립트 중 아래의 sudo grep 부분을 통해 먼저 원하는 텍스트의 라인을 찾아낸다.
num=$(sudo grep -n "## Allow root" /etc/sudoers | cut -d: -f1 | head -1)
그리고 +1의 값을 더해주어 그 아래 라인을 만든 후, 아래 명령어를 통해 해당 라인에 데이터를 넣어주는 방법이다.
sudo sed -i "${num}s/${data}/${data}\n${data2}/g" /etc/sudoers
여기서 sed 명령어에서 \t이 제대로 작성하지 않아 위에서와 같이 해당 부분을 아에 변수로 선언하여 작성하였으며,
위와 같이 수행하였더니 \t이 입력되고 잘 적용되는 것을 볼 수 있었다.
위와 같이 spawn이나 sed명령어를 통해 정말 많은 활용을 하는 스크립트를 구성 할 수 있다.