Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682983
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2011-04-27 17:03:44

原文地址:批量添加用户 作者:linyunxian

为 vps 批量添加用户,为该用户的ssh,vpn,ftp服务提供统一的帐号密码。

使用方法
  1. $ ./adduser.sh # 从users.list文件读入用户名,并为该用户名生成users.XXXX形式的密码(XXXX为随机数)
  2. $ ./addvpn.sh # 从users.list文件读入用户名和密码, 同步到 /etc/ppp/chap-secrets 文件.



命令脚本
  1. #
  2. #users.list
  3. #
  4. user1
  5. user2
  6. user3
  7. user4
#
# adduser.sh
#
  1. #!/bin/bash

  2. ERROR () {
  3. echo "error occur: $1"
  4. exit 1

  5. }


  6. LIST="./users.list"
  7. PASSWD="./passwd.exp"
  8. export IFS=':'

  9. #set -x
  10. [[ $UID -ne 0 ]] && echo "Permission deny" && exit 1

  11. while read login passwd; do
  12. if [[ -z $passwd ]] ; then
  13. echo "Add account: $login..."
  14. useradd -N -m -G sshd -s /bin/false $login || ERROR "useradd failed"
  15. passwd=$(mktemp -u ${login}.XXXX)
  16. $PASSWD $login $passwd || ERROR "$PASSWD failed"
  17. sed -i "s/${login}.*/$login:$passwd/" $LIST
  18. echo "--------------------"
  19. fi
  20. done < $LIST

#
# passwd.exp
#
  1. #!/usr/bin/expect -f

  2. # ./passwd.exp $login $passwd

  3. set password [lindex $argv 1]
  4. set login [lindex $argv 0]

  5. set ret 0
  6. set timeout 3

  7. spawn passwd $login
  8. expect "*password:"
  9. sleep 1
  10. send "$password\r"
  11. expect "*password:"
  12. sleep 1
  13. send "$password\r"

  14. expect {
  15. "*successfully" {
  16. send_user "# passwd $login $password Okay\n"
  17. }
  18. timeout {
  19. send_user "PASSWD error";
  20. set ret 1
  21. }
  22. }


  23. exit $ret

#
# addvpn.sh
#
  1. #!/bin/bash

  2. # add user.list to /etc/ppp/chap-secrets

  3. ERROR () {
  4. echo "error occur: $1"
  5. exit 1

  6. }

  7. LIST="./users.list"
  8. CHAP_SECRETS="/etc/ppp/chap-secrets"
  9. export IFS=':'

  10. [[ $UID -ne 0 ]] && echo "Permission deny" && exit 1

  11. while read login passwd; do
  12. if [[ -n $passwd ]]; then
  13. echo "Add vpn accout: ${login}@${passwd}..."
  14. sed -i "/${login}/d" $CHAP_SECRETS
  15. echo -e "${login}\tpptpd\t${passwd}\t*" >> ${CHAP_SECRETS} || ERROR "sed failed"
  16. echo "--------------------"
  17. fi
  18. done < $LIST

阅读(491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~