| 您的位置:首页 > 文档 > Shell > |
文章分类热门文章 |
非交互方式改变登录用户密码创建:2005-10-26 00:49:46 作者:Unlinux 来自: http://www.Unlinux.com 用SHELL编写改变登录用户密码, 用户名、旧密码、新密码用重定向输入???? 急得像热锅上的蚂蚁 从文件里读出数据,放进SHELL中 使用expect,(需要安装expect和tcl)。 #!/usr/local/bin/expect -f set username $env(UNAME) set password $env(UPASS) spawn passwd $username expect "New password:" send "$password " expect "Re-enter new password:" send "$password " send "exit " expect eof 还可以用一个叫pty的工具,也需要下载安装。 #!/bin/sh /etc/mknod out.$$ p; exec 2>&1 ( exec 4<out.$$; rm -f out.$$ <&4 waitfor 'password:' echo "$2" <&4 waitfor 'password:' echo "$2" <&4 cat >/dev/null ) | ( pty passwd "$1" >out.$$ ) rm -f out.$$ 纯shell的不行。用sleep加管道也不行。 使用如下的.c编译生成mypass可以代替passwd命令,配合awk之类工具,把它生成的结果写到shadow里(有的系统是是在passwd里),便可以了。 两位的salt可以随便生成。 #include <stdio.h> #include <string.h> main(argc,argv) int argc; char *argv[]; { char line[512],salt[3]; int i,l; salt[2]=' 转载自:http://www.unlinux.com/doc/shell/20051026/263.html 【评论】 【加入收藏夹】 【大 中 小】 【打印】 【关闭】 ※ 相关链接 无相关信息 |