Expect的应用——修改Linux用户口令


Expect一个控制交互式程序的工具,被设计成专门针和交互式程序的交互。能弥补linux中sh,csh和别的一些shell提供的用户接口的局限性。

Expect程序员可以写脚本来描述程序和用户的对话,接着Expect程序可以非交互的运行“交互式”的程序。Expect还可以用于对对话的一部分进行自动化,因为程序的控制可以在键盘和脚本之间进行切换。

#!/usr/bin/expect

if { $argc<1 } {
send_user "usage: $argv0 U_Name PassWD\n"
exit 1
}
set UN [lindex $argv 0]
set PW [lindex $argv 1]

spawn -noecho /usr/bin/passwd $UN
expect {
"password" {send "$PW\n"}
}
expect {
"password" {send "$PW\n"}
}
expect {
"password" {send "$PW\n"}
}
expect eof
exit 0


Telnet,crypt,su,rlogin,和上例中的passwd程序皆无法在shell脚本里面自动执行,除此以外很多程序设计也是要求用户输入。

所以Linux学习中Epect的必将得到广泛应用!

相关内容