본문 바로가기

Linux/Exercise

쉘프로그래밍 기초 - 연습용

문제 1] 사용자들의 존재 여부를 확인하는 스크립트를 작성하시오. (사용자 폴더는 /home, /data) - if 사용

예)
# su adduser.sh
ENTER USER : scv
scv 사용자는 /home 폴더에 있는 사용자입니다.

모범 답안
# vi adduser.sh
---------------------------------------------------------
#!/bin/bash
echo -n "ENTER USER : "
read A
if [ -d /home/$A ] || [ -d /home/*/$A ]
then
      echo "$A  사용자는 /home 폴더에 있는 사용자입니다."
elif [ -d /data/$A ] || [ -d /data/*/$A ]
then
      echo "$A 사용자는 /data 폴더에 있는 사용자입니다."
elst
      echo "$A 사용자는 없는 사용자입니다."
fi
---------------------------------------------------------

# cat adduser.sh
# sh adduser.sh
ENTER USER : scv
scv 사용자는 /home 폴더에 있는 사용자입니다.
# sh adduser.sh
ENTER USER : shin
shin는 /data/shin에 있는 사용자 입니다.
#

문제 2] 자동차의 모델명과 연비를 입력하면 에너지 등급을 알려주는 스크립트를 작성하시오. - if 사용

5보다 작으면 5등급
7보다 작으면 4등급
9보다 작으면 3등급
11보다 작으면 2등급
12보다 크면 1등급

예)
#su if5.sh
연비를 에너지 소비 등급으로 바꿔줍니다.

모델명 : sonata
측정한 연비 : 6
sonata의 에너지 소비 등급은 4등급입니다.

모범답안
# vi if5.sh
---------------------------------------------------------
#!/bin/bash
echo "연비를 에너지 소비 등급으로 바꿔줍니다."
echo " "
echo "모델명 : "
read model
echo "측정한 연비 : "
read oil
echo " "
if [ $oil -lt 5 ]
then
        echo "$model의 에너지 소비 등급은 5등급입니다."
elif [ $oil -lt 7 ]
then
        echo "$model의 에너지 소비 등급은 4등급입니다."
elif [ $oil -lt 9 ]
then
        echo "$model의 에너지 소비 등급은 3등급입니다."
elif [ $oil -lt 11 ]
then
        echo "$model의 에너지 소비 등급은 2등급입니다."
else
        echo "$model의 에너지 소비 등급은 1등급입니다."
fi
---------------------------------------------------------

문제 3] /etc/shadow 파일의 사용유무를 확인하는 스크립트를 작성하시오. - if 사용
단, 사용하고 있는 경우에는 사용한다는 표시를 하고
사용하고 있지 않다면 사용하지 않다고 표시를 하고나서 /etc/shadow 파일을 사용하게 만드시오.

만약 /etc/shadow 파일을 사용하고 있지 않은데 사용한다고 하는 경우에는
사용하지 않는다고 표시를 하고 /etc/shadow 파일을 사용하게 만드시오.


# vi if6.sh
---------------------------------------------------------
#!/bin/bash
echo -n "shadow file use??? (y or n) : "
read Y
if [ "$Y" = "y" -o "$Y" = "Y" -o "$Y" = "YES" -o "$Y" = "yes" ] && [ -e /etc/shadow ]
then
        echo "shadow file use!!!"
exit
elif [ "$Y" = "n" -o "$Y" = "N" -o "$Y" = "NO" -o "$Y" = "no" ] && [ -e /etc/shadow ]
then
        echo "shadow file use!!!"
exit
else
        echo " "
        echo "잘못 된 입력값을 입력하셨습니다."
        echo " "
        sh if6-1.sh
exit
fi

if [ $Y = n ] || [ $Y = N ] || [ $Y = NO ] || [ $Y = no ]
then
        echo "shadow file not use!!!"
        echo "pwconv now"
        pwconv
exit
elif [ $Y = y ] || [ $Y = Y ] || [ $Y = YES ] || [ $Y = yes ]
then    echo "shadow file not use!!!"
        echo "pwconv now"
        pwconv
exit
fi

---------------------------------------------------------

문제 4] 두개의 아규먼트로 입력받아 syslog 를 start, stop, restart 를 실행하고
잘못된 아규먼트 값을 입력 받으면 syntex error!!! 를 출력하는 스크립트를 작성하시오.


# vi service.sh
---------------------------------------------------------
#!/bin/bash
if [ "$1" = "syslog" ] && [ "$2" = "start" ]
then
        echo "service $1 $2"
        service syslog start
        exit
elif [ "$1" = "syslog" ] && [ "$2" = "stop" ]
then
        echo "service $1 $2"
        service syslog stop
        exit
elif [ "$1" = "syslog" ] && [ "$2" = "restart" ]
then
        echo "service $1 $2"
        service syslog restart
        exit
else
        echo " "
        echo "syntex error !!!"
        echo "(service_name) (start/stop/restart)"
        exit
fi
---------------------------------------------------------