免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4133 | 回复: 12

[系统管理] 远程自动更改root密码 [复制链接]

论坛徽章:
10
2015亚冠之全北现代
日期:2015-06-16 09:16:24CU十四周年纪念徽章
日期:2016-08-08 11:20:3915-16赛季CBA联赛之青岛
日期:2016-02-17 09:14:2015-16赛季CBA联赛之北京
日期:2016-02-12 22:23:3215-16赛季CBA联赛之同曦
日期:2016-01-15 11:11:0815-16赛季CBA联赛之广东
日期:2016-01-15 10:46:4215-16赛季CBA联赛之北控
日期:2015-12-19 18:20:002015亚冠之山东鲁能
日期:2015-07-02 14:03:482015亚冠之吉达阿赫利
日期:2015-06-28 14:08:4015-16赛季CBA联赛之天津
日期:2017-04-21 10:37:41
发表于 2015-12-14 00:44 |显示全部楼层
本帖最后由 huazai0715 于 2015-12-14 00:52 编辑

集思广益:如题,远程自动生成密码并更改root密码(批量更改密码);
例如使用:expect、python中fabric
跪求好的方法和脚本;

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
发表于 2015-12-14 09:15 |显示全部楼层
passwd有个很方便的参数“--stdin”

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2015-12-14 11:04 |显示全部楼层
建立了无密码登录可已使用以下脚本,如果没有,可以配合expect ,修改以下即可。
#!/bin/bash

###change pwd
ssh_user=root
ssh_port=22
log=runlog.log
pwd_txt=password.txt

lan_ip=(10 11 12 )
wan_ip=(45 46 47  )

pwdlen=20



#######
###main start


for ((n=0;n<${#lan_ip[@]};n++))
do

  lan_ip=192.168.1.${lan_ip[${n}]}
  wan_ip=220.181.120.${wan_ip[${n}]}
  
pwd=$(head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c ${pwdlen})

if [ ${#pwd} -eq ${pwdlen} ];then

ssh -n -p${ssh_port}  -o ConnectTimeout=60 ${ssh_user}@${lan_ip} "echo \"${pwd}\"|passwd --stdin ${ssh_user}"


if [ $? -eq 0 ] ;then
  echo -e  "${wan_ip}\t\t${lan_ip}\t\t${ssh_user}\t\t${pwd}\n">>${pwd_txt}
  echo " `date '+%F %T'` change ${ssh_user}'s password of server ${lan_ip} is successful."|tee -a ${log}
  echo "`date '+%F %T'` user: ${ssh_user}"|tee -a ${log}
  echo "`date '+%F %T'` password: ${pwd}"|tee -a ${log}
  echo "`date '+%F %T'` ###############"|tee -a ${log}
  else
  echo "`date '+%F %T'` change ${ssh_user}'s password of server ${lan_ip} is failed."|tee -a ${log}
  fi
  else
  echo "`date '+%F %T'` create password failed for server ${lan_ip} "|tee -a ${log}
  echo "`date '+%F %T'` change ${ssh_user}'s password of server ${lan_ip} is failed."|tee -a ${log}
  fi
done

论坛徽章:
10
2015亚冠之全北现代
日期:2015-06-16 09:16:24CU十四周年纪念徽章
日期:2016-08-08 11:20:3915-16赛季CBA联赛之青岛
日期:2016-02-17 09:14:2015-16赛季CBA联赛之北京
日期:2016-02-12 22:23:3215-16赛季CBA联赛之同曦
日期:2016-01-15 11:11:0815-16赛季CBA联赛之广东
日期:2016-01-15 10:46:4215-16赛季CBA联赛之北控
日期:2015-12-19 18:20:002015亚冠之山东鲁能
日期:2015-07-02 14:03:482015亚冠之吉达阿赫利
日期:2015-06-28 14:08:4015-16赛季CBA联赛之天津
日期:2017-04-21 10:37:41
发表于 2015-12-14 13:21 |显示全部楼层
偶像,我的意思是远程更改密码哇 我知道echo '123456'|passwd --stdin root
回复 2# dn833


   

论坛徽章:
10
2015亚冠之全北现代
日期:2015-06-16 09:16:24CU十四周年纪念徽章
日期:2016-08-08 11:20:3915-16赛季CBA联赛之青岛
日期:2016-02-17 09:14:2015-16赛季CBA联赛之北京
日期:2016-02-12 22:23:3215-16赛季CBA联赛之同曦
日期:2016-01-15 11:11:0815-16赛季CBA联赛之广东
日期:2016-01-15 10:46:4215-16赛季CBA联赛之北控
日期:2015-12-19 18:20:002015亚冠之山东鲁能
日期:2015-07-02 14:03:482015亚冠之吉达阿赫利
日期:2015-06-28 14:08:4015-16赛季CBA联赛之天津
日期:2017-04-21 10:37:41
发表于 2015-12-14 13:23 |显示全部楼层
本帖最后由 huazai0715 于 2015-12-14 13:25 编辑

我有几百台机器,不可能都要建立无密码认证吧;有么有别的招;(使用for循环,随机生成密码,进行密码更改)
回复 3# vagrant_1220


   

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2015-12-14 13:29 |显示全部楼层
只要将这一句 ssh -n -p${ssh_port}  -o ConnectTimeout=60 ${ssh_user}@${lan_ip} "echo \"${pwd}\"|passwd --stdin ${ssh_user}" 使用 expect 提供用户密码就可以了

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
发表于 2015-12-14 13:35 |显示全部楼层
  1. #!/bin/bash

  2. user='root'
  3. old_passwd='123456'
  4. new_passwd='test@2015'
  5. ip='10.10.2.142'
  6. port='22'

  7. expect << EOF
  8. set timeout -1
  9. spawn ssh -p 22 -o StrictHostKeyChecking=no ${user}@${ip} passwd root
  10. set timeout -1
  11. expect "*:"
  12. set timeout -1
  13. send "$old_passwd\r"
  14. set timeout -1
  15. expect "*:"
  16. set timeout -1
  17. send "$new_passwd\r"
  18. set timeout -1
  19. expect "*:"
  20. set timeout -1
  21. send "$new_passwd\r"
  22. expect eof
  23. EOF
复制代码

论坛徽章:
10
2015亚冠之全北现代
日期:2015-06-16 09:16:24CU十四周年纪念徽章
日期:2016-08-08 11:20:3915-16赛季CBA联赛之青岛
日期:2016-02-17 09:14:2015-16赛季CBA联赛之北京
日期:2016-02-12 22:23:3215-16赛季CBA联赛之同曦
日期:2016-01-15 11:11:0815-16赛季CBA联赛之广东
日期:2016-01-15 10:46:4215-16赛季CBA联赛之北控
日期:2015-12-19 18:20:002015亚冠之山东鲁能
日期:2015-07-02 14:03:482015亚冠之吉达阿赫利
日期:2015-06-28 14:08:4015-16赛季CBA联赛之天津
日期:2017-04-21 10:37:41
发表于 2015-12-14 13:52 |显示全部楼层
OK,谢谢!我去试试回复 7# jcdiy0601


   

论坛徽章:
10
2015亚冠之全北现代
日期:2015-06-16 09:16:24CU十四周年纪念徽章
日期:2016-08-08 11:20:3915-16赛季CBA联赛之青岛
日期:2016-02-17 09:14:2015-16赛季CBA联赛之北京
日期:2016-02-12 22:23:3215-16赛季CBA联赛之同曦
日期:2016-01-15 11:11:0815-16赛季CBA联赛之广东
日期:2016-01-15 10:46:4215-16赛季CBA联赛之北控
日期:2015-12-19 18:20:002015亚冠之山东鲁能
日期:2015-07-02 14:03:482015亚冠之吉达阿赫利
日期:2015-06-28 14:08:4015-16赛季CBA联赛之天津
日期:2017-04-21 10:37:41
发表于 2015-12-14 13:52 |显示全部楼层
谢谢,试试先回复 6# vagrant_1220


   

论坛徽章:
0
发表于 2015-12-14 14:03 |显示全部楼层
本帖最后由 jian100328823 于 2015-12-14 14:11 编辑

首先,写一个文档serverlist.txt ,里面写好要改密码的服务器ip 和当前密码,如:
172.16.2.2  aaabbbccc
172.16.3.3  aaabbbccc
然后写一个shell脚本,循环遍历这个文档,并生成新密码,然后把服务器ip,旧密码,新密码提供给expect脚本进行改密,shell脚本内容如下:
#!/bin/bash

ip=$(cat /root/serverlist.txt | awk -F" " '{print $1}')
for i in $ip
do
oldpass=$(cat /root/serverlist.txt | grep "$i" | awk -F" " '{print $2}')
newpass=$(cat /dev/urandom | head -n 1 | md5sum | cut -b 1-10)
echo "$i <------> $newpass" >> newpass.txt
./expect.sh $i $oldpass $newpass
done

最后就是写expect脚本进行改密,脚本命名和shell脚本中写的一致,这里用expect.sh,脚本内容如下:
#!/usr/bin/expect -f

set IP [lindex $argv 0]
set OLDPASS [lindex $argv 1]
set NEWPASS [lindex $argv 2]

spawn ssh $IP "echo \"$NEWPASS\" | passwd --stdin root"

expect {
"(yes/no)" { send "yes\r"; exp_continue }
"password:" { send "$OLDPASS\r"}
}
interact

exit

新密码随机生成,只需提供ip和原密码,新密码保存在当前目录下的newpass.txt文档中。
shell脚本和expect脚本放在同一个目录中,执行shell脚本即可。



   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP