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명령어를 통해 정말 많은 활용을 하는 스크립트를 구성 할 수 있다.