首页 > 代码库 > 运维必懂脚本之闲来无事改密码

运维必懂脚本之闲来无事改密码

    在生产中,我们经常遇到上一任运维走了,要改密码,和定期修改密码加固安全等需求。现在来分享一个小脚本。

    首先我们先来了解下密码修改命令:

#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” 博客,转载请与作者联系!

运维必懂脚本之闲来无事改密码