用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]='