免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8174 | 回复: 17
打印 上一主题 下一主题

批量创建用户并设置密码的各种示例(含expect),感谢大师,感谢党,感谢CCTCV... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-23 15:57 |只看该作者 |倒序浏览
# passwd usera
新口令: 123
请重新输入新口令:123

就这么简单,如何用脚本实现?小弟是菜鸟,请各位大佬出手帮忙

原帖由 doni 于 2007-7-23 17:41 发表
try this
(sleep 3;echo root;sleep 2;echo 'your_pwd';sleep 2;echo "passwd someone";sleep 1;echo 'pwd';sleep 1;echo 'pwd';sleep 1;echo "exit";sleep 2) | telnet localhost


高,实在是高!以上脚本经验证可以修改密码,佩服大师的创造力~

虽然效率低点,好歹也看到用脚本自动批量修改的影子了,呵呵,在大师的指导下,完成以下批量脚本:


小技巧1:批量创建用户
  1. 可以利用脚本完成用户的批量创建,简要示例如下:
  2. 1.        创建一个用户列表文件usr.lst,文件的内容为每行一个用户名
  3. # cat /tmp/usr.lst
  4.   usr1
  5.   usr2
  6.   usr3
  7. 2.        创建一个脚本文件useradd.sh,内容如下:
  8. # cat /tmp/useradd.sh
  9.   for i in `cat /tmp/usr.lst`
  10.   do
  11.       useradd -d /export/home/$i -m $i
  12.   done
  13. # chmod u+x /tmp/useradd.sh
  14. 3.        运行脚本文件,批量添加用户(usr1,usr2,usr3)
  15. # . /tmp/useradd.sh
复制代码
小技巧2:批量修改用户密码
  1. 同样,可以利用脚本完成用户密码的批量修改,简要示例如下:
  2. 1.        创建一个用户/密码对文件,内容如下:
  3. # cat user.passwd
  4.    usr1:abc1
  5.    usr2:abc2
  6.    usr3:abc3

  7. 2.        创建一个脚本文件,并设置执行权限,内容如下
  8. # cat autochg.sh
  9.   #!/usr/bin/bash
  10.    for i in `cat $1`
  11.    do
  12.       USRNME=${i%:*}
  13.       PASSWD=${i#*:}
  14.       (sleep 3;echo cluster;sleep 2;echo 'cluster';sleep 2;echo "su";sleep 1;echo "solaris"; \
  15.       sleep 2;echo "passwd $USRNME";sleep 1;echo $PASSWD;sleep 1;echo $PASSWD; \
  16.       sleep 1;echo "exit";sleep 2) | telnet localhost 1>/dev/null
  17.    done
  18. # chmod u+x autochg.sh

  19. 3.        运行脚本文件,批量设置用户的密码
  20. # ./autochg.sh ./user.passwd
复制代码


当然,还有传说中的第三方工具expect


原帖由 estar 于 2007-7-23 16:16 发表
改密码要交互式的,脚步实现比较困难的。linux下可以用expect命令来实现命令的交互,不知道solaris下是是否需要安装package来实现支持expect命令。


需要安装:

expect-5.43.0-sol10-x86-local.gz
Expect is a program that performs programmed dialogue with other interactive programs - installs in /usr/local.  

Dependencies: coreutils, tcl-8.5a4, tk-8.5a4and to have /usr/local/lib/libgc_s.so.1 install either the
libgcc-3.4.6 or gcc-3.4.6 or later.

OK,安装完毕,注意看,开工干活,准备收衣服啦~
  1. 1、老规矩,创建用户/密码对文件
  2. # cat user.password
  3.   usr2:abcd2
  4.   usr3:abcd3
  5.   #=========END=======================================================

  6. 2、创建expect.sh脚本,此脚本完成自动化修改用户的密码工作

  7. # cat expect.sh
  8.   #!/usr/local/bin/expect                                #调用expect
  9.   if {$argc<2} {                                         #假设运行expect.sh a1 b2 那么$argc就是2(a1和b2共两个参数)
  10.           send_user "usage: $argv0 username password\n"  # $argv0是命令的名字,即expect.sh
  11.           exit
  12.           }

  13.           set username [lindex $argv 0]                   #定义变量username的值=第一个参数,即a1
  14.           set password [lindex $argv 1]                   #定义变量password=第二个参数,即b2
  15.           send_user "execute:$argv0 $username $password\n"#向父级进程显示信息,通常将在用户终端屏幕显示指定信息

  16.   spawn -noecho passwd [lindex $argv 0]                   #spawn命令调用passwd命令,产生一个子进程
  17.                                                           #-noecho不回显spawn正在调用的命令,默认会显示passwd xxxx
  18.   expect {
  19.         "*口令*"        {send "$password\n"}              #如果遇到含“口令”的字符串,就发送密码字符串并回车
  20.         "*word*"        {send "$password\n"}              #如果遇到含“word”的字符串,就发送密码字符串并回车
  21.         }
  22.   expect {                                                #因为修改密码要连续输入两次新密码因此要expect两次
  23.         "*口令*"        {send "$password\n"}
  24.         "*word*"        {send "$password\n"}
  25.         }

  26.   #expect "*word*"                                        #如果期待出现的字符串只有一种结果,可用这种方式
  27.   #send "$password\n"

  28.   expect eof
  29.   exit
  30.   #=========END=====可以用./expect.sh username password直接调用这个文件================

  31. 3、创建autochg.sh脚本,并在此脚本中调用前面创建的expect.sh,完成批量化工作
  32.   
  33. # cat autochg.sh
  34.   #!/usr/bin/bash
  35.   
  36.   for i in `cat $1`          #比如执行autochg.sh xxx,那么$0就是autochg.sh,$1就是xxx,以此类推
  37.   do
  38.           USERNAME=${i%:*}   #自右起第一个冒号后的字符都不要
  39.           PASSWORD=${i#*:}   #自左起第一个冒号前的字符都不要
  40.           ./expect.sh $USERNAME $PASSWORD
  41.   done
  42.   #=========END========================================================================
  43.   
  44. # chmod u+x expect.sh autochg.sh                          #赋予两个脚本文件可执行权限
  45. # ./autochg.sh user.password
复制代码
expect的帮助文件在附件中,慢慢研究了,郁闷ing

[ 本帖最后由 yuhuohu 于 2007-7-24 22:51 编辑 ]

expect.rar

27.91 KB, 下载次数: 152

论坛徽章:
0
2 [报告]
发表于 2007-07-23 16:16 |只看该作者
改密码要交互式的,脚步实现比较困难的。linux下可以用expect命令来实现命令的交互,不知道solaris下是是否需要安装package来实现支持expect命令。

论坛徽章:
0
3 [报告]
发表于 2007-07-23 17:03 |只看该作者
原帖由 estar 于 2007-7-23 16:16 发表
改密码要交互式的,脚步实现比较困难的。linux下可以用expect命令来实现命令的交互,不知道solaris下是是否需要安装package来实现支持expect命令。


需要安装:

expect-5.43.0-sol10-x86-local.gz


Expect is a program that performs programmeddialogue with other interactive programs - installs in /usr/local.  

Dependencies: coreutils, tcl-8.5a4, tk-8.5a4and to have /usr/local/lib/libgc_s.so.1 install either the
libgcc-3.4.6 or gcc-3.4.6
or later.

慢慢研究了,郁闷ing

[ 本帖最后由 yuhuohu 于 2007-7-23 17:13 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-07-23 17:41 |只看该作者
try this
(sleep 3;echo root;sleep 2;echo 'your_pwd';sleep 2;echo "passwd someone"sleep 1;echo 'pwd';sleep1;echo 'pwd';sleep 1;echo "exit";sleep 2) | telnet localhost

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-07-23 17:53 |只看该作者
原帖由 doni 于 2007-7-23 17:41 发表
try this
(sleep 3;echo root;sleep 2;echo 'your_pwd';sleep 2;echo "passwd someone"sleep 1;echo 'pwd';sleep1;echo 'pwd';sleep 1;echo "exit";sleep 2) | telnet localhost


This can do!
中间一处少了个分号

论坛徽章:
0
6 [报告]
发表于 2007-07-23 18:05 |只看该作者
THKS...真有创意,.明天再实验

论坛徽章:
0
7 [报告]
发表于 2007-07-23 23:13 |只看该作者
原帖由 doni 于 2007-7-23 17:41 发表
try this
(sleep 3;echo root;sleep 2;echo 'your_pwd';sleep 2;echo "passwd someone"sleep 1;echo 'pwd';sleep1;echo 'pwd';sleep 1;echo "exit";sleep 2) | telnet localhost

确实比较有创意,应该可以的。但是如果主机响应比较慢的话,需要调整sleep的时间。

论坛徽章:
0
8 [报告]
发表于 2007-07-23 23:35 |只看该作者
Won't work. telnet should expect an input from a terminal only.
expect is one way to deal with your need.

论坛徽章:
0
9 [报告]
发表于 2007-07-24 03:28 |只看该作者
Hope this article could help:

/etc/shadow password change script

http://www.tek-tips.com/viewthread.cfm?qid=1348695&page=7

论坛徽章:
0
10 [报告]
发表于 2007-07-24 09:16 |只看该作者
谢谢各位大师前辈的热情帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP