首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过ssh在linux服务器上更改密码的脚本

通过ssh在linux服务器上更改密码的脚本
EN

Stack Overflow用户
提问于 2011-11-23 10:40:16
回答 14查看 99.3K关注 0票数 20

我们的IT环境中有许多Red Hat linux服务器。我的团队成员要求我编写一个脚本(最好是shell脚本),以便使用SSH一次性更改每个用户的密码。

我试图找到一个解决方案,但我找到的许多脚本都在使用Expect。我们没有在服务器上安装Expect,系统管理员拒绝让我们安装它。此外,用户没有根用户访问权限,因此不能使用passwd --stdinchpasswd

有没有办法编写一个脚本,以便用户可以运行它并只更改列表中所有服务器上自己用户的密码?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-11-11 17:13:38

远程计算机不需要安装expect。您可以在本地工作站或VM (virtualbox)或任何*nix机器上安装expect,并编写一个调用此.ex (expect)脚本的包装器(发行版与发行版之间可能有一些小的变化,这在CentOS 5/6上进行了测试):

代码语言:javascript
复制
#!/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
票数 24
EN

Stack Overflow用户

发布于 2011-11-23 10:47:21

您不需要超级用户访问权限即可使用passwd

这个应该可以很好的工作。

代码语言:javascript
复制
passwd <<EOF
old password
new password
new password
EOF
票数 12
EN

Stack Overflow用户

发布于 2011-11-23 11:41:11

您应该尝试pssh (同时使用并行ssh )。

代码语言:javascript
复制
cat>~/ssh-hosts<<EOF
user100@host-foo
user200@host-bar
user848@host-qux
EOF

pssh -h ~/pssh-hosts 'printf "%s\n" old_pass new_pass new_pass | passwd'
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8236699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档