在生产中,我们经常遇到上一任运维走了,要改密码,和定期修改密码加固安全等需求。现在来分享一个小脚本。
首先我们先来了解下密码修改命令:
#passwd root Changing password for root. New password: Retype new password: #
可以看到passwd默认是带有交互,那并不是和我们在脚本里面用,那怎么办?通过help,在passwd里面我们看到一个参数“--stdin”
# passwd --help Usage: passwd [OPTION...] <accountName> -k, --keep-tokens keep non-expired authentication tokens -d, --delete delete the password for the named account (root only) -l, --lock lock the password for the named account (root only) -u, --unlock unlock the password for the named account (root only) -e, --expire expire the password for the named account (root only) -f, --force force operation -x, --maximum=DAYS maximum password lifetime (root only) -n, --minimum=DAYS minimum password lifetime (root only) -w, --warning=DAYS number of days warning users receives before password expiration (root only) -i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only) -S, --status report password status on the named account (root only) --stdin read new tokens from stdin (root only) Help options: -?, --help Show this help message --usage Display brief usage message
那么我们就好好利用这个参数来修改下密码,例如我们要修改的密码为“123456”,命令就是:
#echo "123456"|passwd root --stdin
那剩下的事情就是密码怎么处理,从上面可以看到,echo 是明文的,那怎么办呢?竟然是明文数据,那么唯一的选择就是来一段完全记不住的密码咯,自己都记不住,还怕被别人知道?
那问题来了,最记不住的密码是啥?我想大家都有答案了,就是md5。那么生成md5是啥
# echo ‘123456‘|md5sum f447b20a7fcbf53a5d5be013ea0b15af -
可以看到这里有个小恶心的-,awk玩得溜的同学就简单,不会awk的同学怎么办呢?可以试下用head,还能控制字段长度。
# echo ‘123456‘|md5sum|head -c 24 f447b20a7fcbf53a5d5be013
那密码解决了,剩下还有啥,剩下就是建立ssh的密钥认证,
# ssh-keygen #生成验证密钥 # ssh-copy-id HOSTNAME #将密钥下发到HOSTNAME服务器。当然,需要进行一次密码确认。
到这里,用到的东西基本都说了一遍,那么下来就是脚本了。
#!/bin/bash for i in $(cat ./hostname); do PWD=$(echo $i | md5sum|head -c 24); sed -i "s:${i}.*:${i}\t${PWD}:g" ./hostname; #记录下修改后的密码。 ssh $i "echo $PWD|passwd root --stdin"; done
完成,这就是必要的小工具。
本文出自 “JyanCing” 博客,转载请与作者联系!
原文地址:http://yahsei.blog.51cto.com/1584302/1908333