Shell脚本:使用SSH登陆并更改密码


平时运维中有时会遇到需要更改服务器的管理员密码,如果服务器比较多的时候,我们可以编写一个脚本来实现,省时省力。linux使用SSH登陆时需 要手动输入yes 来确认连接,所以首先要解决这个问题,让脚本实现远程执行命令无须人工干预。第一步 使用ssh-keygen创建本机的公钥和私钥创建成功后会在/root/.ssh下生成私钥和公钥第二步 使用ssh-copy-id复制公钥到远程主机及expect内部命令编写ssh自动登陆脚本auto_ssh_copy_id () {expect -c “set timeout -1;spawn /usr/bin/ssh-copy-id -i /root/.ssh/id_rsa.pub root@$2;expect {*(yes/no)* {send — yesr;exp_continue;}*password:* {send — $1r;exp_continue;}eof{exit 0;}}”;}调用方法:auto_ssh_copy_免费云主机域名id $pass1 $ipnet.$i 假设需要更改密码的服务器IP 在172.18.0.1-172.18.0.100之间,脚本如下。#!/bin/bash#Program##relase#tryrus 20161029ipnet=172.18.0 #改成实际的IP 段declare i=1 #改成实际开始的IPpass1=password1 #ssh远程登陆root的密码pass2=password2 #要设定的新密码auto_ssh_copy_id () {expect -c “set timeout -1;spawn /usr/bin/ssh-copy-id -i /root/.ssh/id_rsa.pub root@$2;expect {*(yes/no)* {send — yesr;exp_continue;}*password:* {send — $1r;exp_continue;}eof{exit 0;}}”;}auto_ssh_change_psw() {expect -c “set timeout -1;spawn ssh root@$2 “passwd”;expect {*New* {send — $1r;exp_continue;}*Retype* {send — $1r;exp_continue;}eof{exit 0;}}”;}while [[ “$i” -le “100” ]] #控制循环,数值改成实际要使用的IPdoping “$ipnet.$i” -c 3 > /dev/nullif [ $? -eq 0 ];thenauto_ssh_copy_id $pass1 $ipnet.$i #运行一次后,这行就不需要了
auto_ssh_change_psw $pass2 $ipnet.$i
filet “i+=1”done第二次测试结果
谢谢你打开这篇博文,并一直坚持看到了这里,如果觉得对你有帮助,请不要吝啬点一下右下角的赞。

相关推荐: Cisco AnyConnect如何通过FreeRADIUS集成域账号和完成Google MFA认证

实验目的:用户使用Cisco AnyConnect拨号时,输入AD账号密码和Google动态码后通过认证,获得授权。Cisco ASA指向FreeRADIUS做认证,FreeRADIUS联动AD和google_authenticator。系统更新修改时区查看时…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/27 11:05
下一篇 01/27 11:05