Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

批量修改远程CentOS服务器密码

时间:2016-06-26 20:29 来源:网络整理 作者:linux系统 阅读:

1ou.com/browse/css/22432.html">批量修改远程CentOS服务器密码

时间:2014-04-14 12:38来源:blog.51cto.com 作者:“罗老三的运维之路” 举报 点击:次

 

 

 

第一种方法通过expect批量修改linux服务器用户名和密码

 

192.168.6.236

192.168.6.235

192.168.6.234

192.168.6.233

192.168.6.232

192.168.6.231

.....

#!/bin/bash

if [ "$1"= "" ] || [ "$2" = "" ] || [ "$1" ="--help" ] [ "$1" = "-h" ]

then

      echo "usage:shell.sh  path/iplist path/adduser"

       exit

fi

cat $1 | while readline

do

      [ -z $line ] && continue

      $2  $line;

done

echo -e"\n  well done\n"

下面是最重要的部分 adduser

#!/usr/bin/expect

 

#登录的用户名

set loginuser""

#密码

set loginpass  ""

 

#要修改的用户名

set passuser"dfdjfk"

#要修改成的新密码

set newpass"your new password"

 

#要添加的新的用户名

set newusername"newusername"

#要添加的新用户的密码

set newpasswd  "newpasswd"

 

set ipaddr [lrange$argv 0 0]

set timeout 300

set cmd_prompt"]#|~]?"

 

spawn ssh$loginuser@$ipaddr

set timeout 300

expect {

    -re "Are you sure you want tocontinue connecting (yes/no)?" {

        send "yes\r"

    } -re "assword:" {

        send "$loginpass\r"

    } -re "Permission denied, please tryagain." {

       exit

    } -re "Connection refused" {

        exit

    } timeout {

       exit

    } eof {

       exit

    }

}

 

expect {

 -re "assword:" {

    send "$loginpass\r"

 }

 -re $cmd_prompt {

    send "\r"

 }

}

 

#-------------------------------------------修改密码

send "passwd $passuser \r";

expect {

"New UNIX password:" {

  send "$newpass\r"

}

"passwd: Only root can specify a username." {

 exit

}

}

 

expect {

"Retype new UNIX password:" {

  send "$newpass\r"

}

}

#------------------------------------------------------添加一个新用户并改密码

expect -re  $cmd_prompt

sleep 1

send"useradd  $newusername \r"

sleep 1

send "passwd$newusername \r";

expect {

"New UNIX password:" {

  send "$newpasswd\r"

}

"passwd: Only root can specify a username." {

 exit

}

}

 

expect {

"Retype new UNIX password:" {

  send "$newpasswd\r"

}

}

 

#---------------------------------------------退出

expect -re$cmd_prompt

exit

ok 调试完也将近花费了一个下午

 

 

第二种方法通过shell脚本实现批量更改密码

#!/bin/bash
# BY kerryhu
# MAIL:king_819@163.com
# BLOG:
# Please manual operation yum of before Operation.....

一、建立信任关系

192.168.9.203 为管理机

192.168.9.201 192.168.9.202 为远程linux服务器

1、在管理机生成证书、

[root@manage ~]# ssh-keygen -t rsa     (然后一路回车)

Generating public/private rsa key pair.

Enter file in which to save the key(/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in/root/.ssh/id_rsa.   (私钥)

Your public key has been saved in /root/.ssh/id_rsa.pub. (公钥)

The key fingerprint is:

36:ec:fc:db:b0:7f:81:7e:d0:1d:36:5e:29:dd:5b:a0

 

2、将管理机上的公钥传送到各远程服务器

如远程服务器更改了默认的ssh端口号, 【linux系统】 ,就使用scp -P 17173,17173为端口号

[root@manage .ssh]# scp id_rsa.pub192.168.9.201:/root/.ssh/authorized_keys

[root@manage .ssh]# scp id_rsa.pub192.168.9.202:/root/.ssh/authorized_keys

 

管理机与远程主机信任关系建立完毕

注意:可能会出现并未建立信任关系的情况。还需操作一下步骤

GNOME下设置ssh-agent

:
1.
.
2.


X环境下配置ssh-agent

 

:
exec /usr/bin/ssh-agent $SHELL

2.
输入命令:
ssh-add

.

3.

 

 

二、通过shell脚本批量修改远程服务器密码

如果要调用mkpasswd就得安装expect,使用mkpasswd可以随机产生密码

usage: mkpasswd [args] [user]

where arguments are:

   -l #     (length of password, default = 10)

   -d #     (min # of digits, default = 2)

   -c #     (min # of lowercase chars, default = 2)

   -C #     (min # of uppercase chars, default = 2)

   -s #     (min # of special chars, default = 1)

  -v        (verbose, show passwd interaction)

   -p prog   (program to setpassword, default = passwd)

比如说你要指定一个长度为8,而且至少有三个大写字母的密码,那么可以这样输入:

mkpasswd -l 8 - C 3,好了,密码就会按你的要求随机产生了

 

yum -y install expect

 

ip_list.txt为远程服务器IP列表

[root@manage .ssh]# catip_list.txt

192.168.9.201

192.168.9.202

如果远程服务器修改了默认ssh的端口号,就使用ssh -p 17173,17173为端口号

 

#!/bin/bash

#============== Though ssh remote server ,auto modifyROOT passwd =============#

for IP in `cat /root/ip_list.txt` #导入远程要修改主机的IP

do

 

#========================= 创建远程主机密码 ==========================#

TMP_PWD=`mkpasswd -l 8 -C 3`        红色字体可以写成自己需要的密码

R_PWD=`echo ${IP}_${TMP_PWD}`        红色字体可以写成自己需要的密码

echo "${IP}_${TMP_PWD}"> R_PWD.txt      红色字体可以写成自己需要的密码

 

#=========================== 修改远程主机密码 ========================#

if [ $? = 0 ] ; then

  ssh $IP passwd root --stdin <R_PWD.txt

  echo -e "$(date "+%Y-%m-%d%H:%M:%S")\t${IP}\t${R_PWD}\t" >> R_Server.log

else

  echo -e "$(date "+%Y-%m-%d%H:%M:%S")\t${IP} R_PWD.txt is create fail\tplease check!\t" >>M_pass.log

fi

if [ $? = 0 ] ; then

  echo -e "$(date "+%Y-%m-%d%H:%M:%S")\tThe ${IP} passwd is modify OK\t" >> M_pass.log

else

  echo -e "$(date "+%Y-%m-%d%H:%M:%S")\tThe ${IP} passwd is modify fail\tpleasecheck!\t" >> M_pass.log

fi

done

 

 

第二种方法的另一个实例

建立SSH信任

将A主机做为客户端(发起SSH请求)

将B主机作为服务器端(接收ssh请求)

以上以主动发起SSH登录请求的主机和接收请求的主机进行分类

   1.

   A主机生成公,私钥证书

 

   [root@buddytj-10 .ssh]# ssh-keygen -t rsa#rsa算法的证书

   Generating public/private rsa keypair. (以下一路回车)

   Enter file in which to save the key(/root/.ssh/id_rsa):

   /root/.ssh/id_rsa already exists.

   Overwrite (y/n)? y (因为我的证书已经存在,覆盖即可)

   Enter passphrase (empty for nopassphrase):

   Enter same passphrase again:

   Your identification has been savedin /root/.ssh/id_rsa. (私钥)

   Your public key has been saved in/root/.ssh/id_rsa.pub. (公钥)

   The key fingerprint is:

   c1:26:cc:88:2b:05:dd:c3:6b:1e:78:5d:da:9c:da:8a

   root@buddytj-10

 

证书就生成了。id_rsa (私钥)|| id_rsa.pub (公钥)

   2.

将A主机生成的公钥传递给B主机

   [root@buddytj-10 .ssh]#scp id_rsa.pub60.28.*.*:/root/.ssh/

   3.

在B主机上将A的公钥更名为

   [root@buddytj-11 .ssh]#mv id_rsa.pubauthorized_keys

   4.至此从A主机远程SSH B主机的工作即告完成

超EASY

   ===============================================================================

   ===============================================================================

修改B主机的密码SHELL

   A#echo 'your_config_passwd' >passwd.txt(建立一个密码文件,输入你要的密码)

    #ssh 60.28.*.* passwd root --stdin 

   ===============================================================================

批量修改主机密码 (继续完成中!!!!!!!!!!!!!!!)

批量SHELL小例,其中还有些不完善的地方!使用中请注意

 

   #!/bin/bash

   ###################Thoughssh remote server ,auto modify ROOT passwd###########

 

   for IP in`cat /root/ip_list.txt` #####导入远程要修改主机的IP#################

 

   do

 

   ##############获得远程主机的用户名###############################################

   ##############这个程序是通过获得远程主机名,利用这个名字为每一台设备添加自己的专用密码###

   ##############如果密码均一致,不用效仿#############################################

 

   R_HOSTNAME=`ssh$IP cat /etc/sysconfig/network|awk -F = '/HOSTNAME/ {print $2}'`

 

   #echo$R_HOSTNAME

 

   #################创建远程主机密码################################################

   CREATE_PWD=`echo$R_HOSTNAME|awk -F - '{print $2}'|tr '[a-z]' '[A-Z]'`

    echo"${CREATE_PWD}123" > passwd.tmp

 

   ###################修改远程主机密码##############################################

   if [ $? =0 ] ; then

    ssh $IPpasswd root --stdin

   if [ $? =0 ] ; then

    echo"The $R_HOSTNAME ($IP) passwd is modify OK"

   else

    echo -e"The $R_HOSTNAME ($IP) passwd is modify fail\n"

    echo"please you check"

   fi

   done

 

 

 

试验成功的脚本

 

1,建立信任关系

建立主机A、B、C上同一用户之间的SSH相互信任关系:

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《批量修改远程CentOS服务器密码》技术文章,《批量修改远程CentOS服务器密码》详细使用和说明,有时《批量修改远程CentOS服务器密码》可能不完善、敬请谅解!如果《批量修改远程CentOS服务器密码》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片