看看我为cygwin编的login和su脚本(转)

http://bbs.chinaunix.net/viewthread.php?tid=133502
刚安装了cygwin,很有意思,想到可以用来做公司操作员的测试环境。但由于cygwin没有登录等操作,于是自己编写了su等脚本,只有最基本的功能。以下是程序脚本,时间紧,而且小弟shell刚刚入门,希望各位老大能够给俺除除虫,提提建议,小弟在此先谢了。
    首先在更改默认的.bash_profile:
echo -e "\n选择要进入的系统:\n"
echo -e "(1) SYSTEM1\n"
echo -e "(2) SYSTEM2\n"
echo -e "(*) EXIT\n"
echo -e "Your choice:\c"
read choice
case "$choice" in
     1) clear
         exec /home/Admin/bin/mylogin /etc/passwd.1        ;;
     2) clear
          exec /home/Admin/bin/mylogin /etc/passwd.2
        ;;
     *) exit
        ;;
esac

下面是passwd.?的格式(反正没有权限设定,所以密码不加密也无所谓啦):
username,password,HOME,shell,PATH,profile

mylogin程序脚本:
if [ $# -ne 1 ]
   then
   exit
fi
PASSFILE=$1
trap "" 2 3 15
i=1
while [ $i -le 3 ]
do
echo -n "login:"
read username
stty -echo
echo -n "password:"
read password
stty echo
echo -e "\n\c"
chkuser=`grep "$username" ${PASSFILE}|wc -l`
if [ $chkuser -ne 1 ]
   then
   echo "UX:login: ERROR: Login incorrect"
   else
   userpasswd=`grep "$username" ${PASSFILE}|awk -F, '{print $2}'`
   if [ "$password" = "$userpasswd" ]
      then
      PS1="\$ "
      HOME=`grep "$username" ${PASSFILE}|awk -F, '{print $3}'`;export HOME
      PATH=`grep "$username" ${PASSFILE}|awk -F, '{print $5}'`;export PATH
      cd $HOME
      PROFILE=`grep "$username" ${PASSFILE}|awk -F, '{print $6}'`
      if [ -f $HOME$PROFILE ]
         then
         . $HOME$PROFILE
      fi
      USERSHELL=`grep "$username" ${PASSFILE}|awk -F, '{print $4}'`;export USERSHELL
      $USERSHELL -i
      i=3
      else
      echo "UX:login: ERROR: Login incorrect"
   fi
fi
i=`expr $i + 1`
done

这样就可以在passwd里添加用户了,登录后进入自己的目录,还有用自己的环境变量,但是su不能用,所以也自己编了个简单的:

PASSFILE=/etc/passwd.1
if [ "$1" != "-" ]
   then username=$1
        envchg=0
   else username=$2
        envchg=1
fi
chkuser=`grep -- "$username" ${PASSFILE}|wc -l`
if [ $chkuser -ne 1 ]
   then
   echo "UX:su: ERROR: Unknown user id: $username"
   exit
   else
   stty -echo
   echo -n "password:"
   read password
   stty echo
   echo -e "\n\c"
   userpasswd=`grep "$username" ${PASSFILE}|awk -F, '{print $2}'`
   if [ "$password" = "$userpasswd" ]
      then
      if [ $envchg -eq 1 ]
         then
         HOME=`grep "$username" ${PASSFILE}|awk -F, '{print $3}'`;export HOME
         PATH=`grep "$username" ${PASSFILE}|awk -F, '{print $5}'`;export PATH
         cd $HOME
         PROFILE=`grep "$username" ${PASSFILE}|awk -F, '{print $6}'`
         if [ -f $HOME$PROFILE ]
            then
            . $HOME$PROFILE
         fi
      fi

转载于:https://www.cnblogs.com/jambol/archive/2008/01/04/1026094.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值