您的位置:首页 > 运维架构 > Shell

shell - 非交互方式改变登录用户密码

2008-10-22 22:45 218 查看
来自:Linux文档
现载:Www.8s8s.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]='
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐