我们的IT环境中有许多Red Hat Linux服务器。我的团队成员要求我编写一个脚本(最好是Shell脚本)以使用SSH一次更改每个用户的密码。
我试图找到一种解决方案,但是我发现许多脚本都在使用Expect。我们没有在服务器上安装Expect,系统管理员拒绝让我们安装它。此外,用户没有root访问权限,从而passwd --stdin或chpasswd无法使用。
passwd --stdin
chpasswd
有什么方法可以编写脚本,以便用户可以运行该脚本并更改列表中所有服务器上仅其自己用户的密码?
不需要安装远程计算机。您可以在本地工作站或VM(虚拟盒)或任何* nix盒上安装Expect,并编写一个调用此.ex(期望)脚本的包装器(发行版之间的细微变化,已在CentOS 5/6上进行了测试) ):
#!/usr/bin/expect -f # wrapper to make passwd(1) be non-interactive # username is passed as 1st arg, passwd as 2nd set username [lindex $argv 0] set password [lindex $argv 1] set serverid [lindex $argv 2] set newpassword [lindex $argv 3] spawn ssh $serverid passwd expect "assword:" send "$password\r" expect "UNIX password:" send "$password\r" expect "password:" send "$newpassword\r" expect "password:" send "$newpassword\r" expect eof