Bash 스크립트 - Ubuntu Linux에서 온보딩 사용자를 자동화하는 방법

5개 이상의 단계를 완료해야 하는 간단한 작업을 수행하는 것에 직면한 적이 있습니까? 같은 작업을 200번 이상 반복해야 했습니까? 이것은 그러한 시나리오의 예입니다.

사례 연구
귀하가 회사의 시스템 관리자이고 귀하의 조직에서 방금 100명의 개발자를 고용했다고 상상해 보십시오. 귀하는 이러한 신입 직원을 온보딩하는 임무를 받았습니다. 각 직원은 다음을 갖추어야 합니다.
  • 개인 홈 디렉토리.
  • 개발자 그룹에 추가되었습니다.
  • ssh 폴더, 인증된 파일을 만듭니다.
  • 공개 키를 승인된 파일에 복사합니다.
  • 비밀번호를 강제로 변경합니다.

  • 이 작업을 수행하기 위해 bash 스크립트를 작성했습니다. 이 스크립트는 여러 사용자가 사용할 수 있습니다. csv 파일(수천 명의 사용자가 있을 수 있음)을 읽고 스크립트에 명시된 매개변수를 기반으로 새 사용자/직원을 생성합니다.

    #!/bin/bash
    userfile=$(cat names.csv)
    PASSWORD=password
    


    위의 스니펫은 스크립트를 소개합니다. #!/bin/bash는 스크립트를 해석하는 방법과 bash 인터프리터의 위치를 ​​컴퓨터에 알려줍니다. userfile는 이름이 csv 파일인 names.csv(직원 이름 포함)를 읽는 변수(다른 이름을 사용할 수 있지만 스크립트의 변수 이름과 일관성을 유지해야 함)입니다. PASSWORDpassword를 값으로 유지하는 변수입니다. 이것은 모든 신입사원의 기본 비밀번호입니다.

    아래의 다음 코드 스니펫은 이 스크립트를 실행하는 사용자에게 루트 권한이 있는지 확인합니다. 현재 사용자 ID가 0인지 확인합니다(루트 사용자 기본 ID 값이 0이므로).

     if [ $(id -u) -eq 0 ]; then
    


    다음으로 for 루프를 사용하여 사용자 이름이 시스템에 이미 존재하는지 확인합니다. user는 csv 파일을 통해 반복되는 변수입니다. 존재하는 경우 존재한다고 알려줍니다.

        for user in $userfile;
        do
                echo $user
            if id "$user" &>/dev/null
            then
                echo "User Exist"
            else
    


    스크립트는 홈 디렉토리에 사용자를 생성하고 스크립트를 실행하기 전에 생성했어야 하는 개발자 그룹에 각 사용자를 추가합니다.

            useradd -m -d /home/$user -s /bin/bash -g developers $user
            echo "New User Created"
            echo
    


    이 다음 스니펫은 사용자 홈 디렉토리에 ssh 폴더를 만듭니다.

         su - -c "mkdir ~/.ssh" $user
            echo ".ssh directory created for new user"
            echo
    


    ssh 디렉토리에 대한 사용자 권한을 설정합니다. 700은 - 발급 사용자가 여전히 전체 액세스 권한을 가지고 있는 동안 다른 사용자의 액세스로부터 디렉터리를 보호함을 의미합니다.

       su - -c "chmod 700 ~/.ssh" $user
             echo "user permission for .ssh directory set"
             echo
    


    이렇게 하면 공개 키가 저장되는 위치가 되는 인증 키 파일이 생성됩니다.

           su - -c "touch ~/.ssh/authorized_keys" $user
            echo "Authorized Key File Created"
            echo
    


    키 파일에 대한 권한을 설정해야 합니다. 권한 600은 소유자가 파일에 대한 전체 읽기 및 쓰기 액세스 권한을 가지며 다른 사용자는 파일에 액세스할 수 없음을 의미합니다.

            su - -c "chmod 600 ~/.ssh/authorized_keys" $user
            echo "user permission for the Authorized Key File set"
            echo
    
    


    서버에서 사용자의 공개 키를 만들고 설정해야 합니다. 이 예에서는 한 세트의 공개 키와 개인 키를 사용했지만 사용자의 사용 사례는 다를 수 있습니다. 참고 Shell은 스크립트를 실행하기 위해 모든 파일(name.csv, 공개 키 및 스크립트 파일)을 보관하기 위해 생성된 디렉토리일 뿐입니다.
    이 스크립트는 생성한 공개 키를 새 사용자의 디렉토리에 복사하고 이름을 authorized_keys로 지정합니다.

            cp -R "/home/ubuntu/Shell/id_rsa.pub" "/home/$user/.ssh/authorized_keys"
            echo "Copyied the Public Key to New User Account on the server"
            echo
            echo
    
            echo "USER CREATED"
    


    이 코드 줄은 password라는 암호를 생성합니다. 처음에 PASSWORD 변수 선언을 기억하세요. -e $user 사용자가 다음에 로그인할 때 암호를 변경하도록 강제합니다.

    sudo echo -e "$PASSWORD\n$PASSWORD" | sudo passwd "$user" 
    sudo passwd -e $user
                fi
            done
        else
        echo "Only Admin Can Onboard A User"
        fi
    


    전체 스크립트는 완료될 때까지 csv 파일의 각 이름을 반복합니다.

    전체 데모 및 스크립트는 내Github를 확인하십시오.

    결론
    반복 작업의 자동화는 대부분 항상 생산성을 높이고 효율성을 높이며 오류를 줄입니다.

    이것이 누군가를 돕기를 바랍니다.

    의견에 팁, 질문, 수정 사항을 자유롭게 공유하십시오!

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기