求解:linux批量添加用户帐号
本帖最后由 tengzf-eagle 于 2012-05-31 18:14 编辑今天遇到这样一个试题,希望求解各位大哥,望大家多多指点啊!!!!{:2_169:}
试题的意思如下:
1、要求交互操作,用户输入一个数字,小于100的,这个数字代表要建立多少个账号;
2、交互式操作,让用户输入一串用于批量添加的帐号的前缀;
3、添加后的帐号名的规则是有前缀加数字组成,小于10的前面加零,例如:前缀06,大于或等于10的就不用加0了;
4、交互式设置添加帐号的过期时间;
5、交互式设置要添加帐号的密码。
这些要在shell脚本实现!
望大家指点一二,小弟不剩感激!!!:emn60: 写个脚本就行了 #!/usr/bin/expect
# 导入 Expect 类库
set hostname
# 设置操作的远程主机,$argv 类似 Shell 函数中的接收参数
# 则表示第一个接收参数 , 例如 expectExample.sh host1
set username
# 同上,第二个接收参数为登陆用户名
set passwd
# 同上,第三个接收参数为登陆用户密码
set timeout 60
# 设置等待超时为 60 秒
spawnssh $username@$hostname
# 使用 spawn 命令来激活 ssh 程序,模拟终端的输出将能够被 Expect 所读取,模拟终端也能从 send 输入到远程主机
expect {
"yes/no" {send "yes ";exp_continue}
"Password:" {send "$passwd ";}
}
#Expect 语句等待远程主机的字符串匹配,当匹配到了“yes/no”
#则执行后面的操作 .expect 搜索模式"*password:",其中 * 允许匹配
# 任意输入,所以对于避免指定所有细节而言是非常有效的。如果远程主机没有 action,
#所以 Expect 检测到该模式后就继续运行。一旦接收到提示后,下一行就就把密码送给当前进程。
send "sudo -s\r"
expect"Password:"{send "$newpasswd\r"}
# 执行 sudo 用户角色转换操作
send "copy /etc/sudoers /usr/local/etcsudoers\r"
# 执行实际运维操作
send "exit\r "
send "exit\r "
expect eof {exit 1}
spawn激活一个 Unix 程序来进行交互式的运行 .
spawn ssh 192.168.1.2
send向进程发送字符串send "sudo -s\r"
set给 Expect 脚本中的变量赋值set username “joe”
expect等待进程收到的远程主机的输出,并匹配对应的字符串 , 一旦匹配,执行后续的操作expect { "yes/no" send "yes" ;}
以上只是示例,给你提供一个解决的思路,具体的脚本还是要自己去动手 不学shell就手动处理吧。
页:
[1]