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

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航