본문 바로가기

Linux/쉘스크립트

until과 위치 매개변수 사용

======================================================================

LAB> until 문을 이용한 사용자 로그인 체크

# useradd testuser
# echo 1234 | passwd --stdin testuser 
# install /dev/null usercheck.sh
# vi usercheck.sh
-- usercheck.sh --
#!/bin/sh

username=testuser

until [ "`w | grep -q $username`" = 0 ]
do
  sleep 1
  printf .
done
-- usercheck.sh --

# ./usercheck.sh


====================================================================
====================================================================
[root@fw ~]# echo $SHLVL
1
[root@fw ~]# set
[root@fw ~]# env
[root@fw ~]# printenv
[root@fw ~]# ls -l /bin/bash
-rwxr-xr-x 1 root root 735804 Jul 22  2011 /bin/bash
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
3
[root@fw ~]# exit
exit
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# exit
exit
[root@fw ~]# echo $SHLVL



[root@fw ~]# echo $SHLVL
1
[root@fw ~]# set
[root@fw ~]# env
[root@fw ~]# printenv
[root@fw ~]# ls -l /bin/bash
-rwxr-xr-x 1 root root 735804 Jul 22  2011 /bin/bash
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
3
[root@fw ~]# exit
exit
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# exit
exit
[root@fw ~]# echo $SHLVL
1
[root@fw ~]# 
[root@fw ~]# echo $SHLVL
1
[root@fw ~]# A=10
[root@fw ~]# echo $A
10
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# echo $A

[root@fw ~]# exit
exit
[root@fw ~]# echo $SHLVL
1
[root@fw ~]# export A
[root@fw ~]# echo $SHLVL
1
[root@fw ~]# echo $A
10
[root@fw ~]# bash
[root@fw ~]# echo $SHLVL
2
[root@fw ~]# echo $A
10
====================================================================


====================================================================
LAB> 사용자를 자동으로 생성하는 스크립트를 생성해보자.

사용법 : useradd.sh <username> <userpass>

파일명 : /usr/sbin/useradd.sh (-rwx------)

# install /dev/null /usr/sbin/useradd.sh
# vi /usr/sbin/useradd.sh
-- /usr/sbin/useradd.sh --
#!/bin/sh

# argument count
argc=$#

if [ $argc -eq 0 ]; then
  echo "Usage : `basename $0` <username> <userpass>"
  echo "  Written by k.s.w "
  exit 1
fi


useradd $1

if [ $? -eq 0 ]; then
  echo $2 | passwd --stdin $1
fi
-- /usr/sbin/useradd.sh --




-- 실행결과 --
- 명령어의 인자가 없을 때 에러를 출력하고 프로그램을 종료한다.
# useradd.sh 
Usage : useradd.sh <username> <userpass>
  Written by k.s.w 

# useradd.sh testuser
useradd: user testuser exists

- 사용자 testuser2 1234 를 생성한다.
# useradd.sh testuser2 1234
Changing password for user testuser2.
passwd: all authentication tokens updated successfully.

- 생성된 사용자로 로그인을 한다.
# ssh testuser2@localhost
testuser2@localhost's password: 
$ id
uid=505(testuser2) gid=505(testuser2) groups=505(testuser2)
-- 실행결과 --
====================================================================
====================================================================
LAB> 여러명의 사용자를 자동으로 생성하는 스크립트를 생성해보자.

$# : 인자의 개수
$0 : 명령어
$1 ~ ... : 인자의 순서
$@ : 전체 인자들
$* : 전체 인자들


# dd if=/usr/sbin/useradd.sh of=/usr/sbin/useradd2.sh
# rsync /usr/sbin/useradd.sh /usr/sbin/useradd2.sh
# cat /usr/sbin/useradd.sh > /usr/sbin/useradd2.sh
# chmod 755 /usr/sbin/useradd2.sh
# install /usr/sbin/useradd.sh /usr/sbin/useradd2.sh
# cp -a /usr/sbin/useradd.sh /usr/sbin/useradd2.sh
-- useradd2.sh --
#!/bin/sh

# argument count
argc=$#

# 사용자의 계정명과 비번을 입력하지 않았다면 사용법을 출력하고 프로그램을 종료한다.
if [ $argc -eq 0 ]; then
  echo "Usage : `basename $0` username [username ...]"
  echo "  Written by k.s.w "
  exit 1
fi


# 전체 사용자 수 만큼 반복해서 돌려서 생성해라.
for user in $@
do
  useradd $user

  if [ $? -eq 0 ]; then
    passwd $user
  fi
done
-- useradd2.sh --

-- 실행결과 --
# useradd2.sh testuser11 testuser22 testuser33
-- 실행결과 --
====================================================================


'Linux > 쉘스크립트' 카테고리의 다른 글

문자열 조작  (0) 2015.05.13
내부 변수(Internal Variables)  (0) 2015.05.12
5. 루프  (0) 2015.05.06
4. 테스트와 분기(Testing and Branching)  (0) 2015.05.04
3. 비교 연산자(이진)  (0) 2015.05.04