|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!公司如今有100多台办事器,必要对办事器举行批量的修正root暗码,还要在每台办事器新建一个用户,假如一个一个登到的办事器长进行修正的话,估量一个下战书又没有了,起首想到的是我最喜好的php,个中有个ssh2模块,不能不供认用php来处置如许的义务是一件很纠结的事变,然后又想到了用shell,不外发明很快就写不下往了,shell的交互才能仍是不克不及让人奉承的,最初发明了expect,expect以其壮大的交互才能,无疑是处置这类义务的首选,再加上expect能够内嵌shell,这使得他变得更壮大。
第一种***经由过程expect批量修正linux办事器用户名和暗码
起首要有一个办事器的ip列表,把要处置的ip放在内里
192.168.6.236
192.168.6.235
192.168.6.234
192.168.6.233
192.168.6.232
192.168.6.231
.....
然后是shell剧本shell.sh
#!/bin/bash
if["$1"=""]||["$2"=""]||["$1"="--help"]["$1"="-h"]
then
echo"usage:shell.shpath/iplistpath/adduser"
exit
fi
cat$1|whilereadline
do
[-z$line]&&continue
$2$line;
done
echo-e"
welldone
"
上面是最主要的局部adduser
#!/usr/bin/expect
#登录的用户名
setloginuser""
#暗码
setloginpass""
#要修正的用户名
setpassuser"dfdjfk"
#要修正成的新暗码
setnewpass"yournewpassword"
#要增加的新的用户名
setnewusername"newusername"
#要增加的新用户的暗码
setnewpasswd"newpasswd"
setipaddr[lrange$argv00]
settimeout300
setcmd_prompt"]#|~]?"
#---------------------------------------------------经由过程ssh登录
spawnssh$loginuser@$ipaddr
settimeout300
expect{
-re"Areyousureyouwanttocontinueconnecting(yes/no)?"{
send"yes"
}-re"assword:"{
send"$loginpass"
}-re"Permissiondenied,pleasetryagain."{
exit
}-re"Connectionrefused"{
exit
}timeout{
exit
}eof{
exit
}
}
expect{
-re"assword:"{
send"$loginpass"
}
-re$cmd_prompt{
send""
}
}
#-------------------------------------------修正暗码
send"passwd$passuser";
expect{
"NewUNIXpassword:"{
send"$newpass"
}
"passwd:Onlyrootcanspecifyausername."{
exit
}
}
expect{
"RetypenewUNIXpassword:"{
send"$newpass"
}
}
#------------------------------------------------------增加一个新用户并改暗码
expect-re$cmd_prompt
sleep1
send"useradd$newusername"
sleep1
send"passwd$newusername";
expect{
"NewUNIXpassword:"{
send"$newpasswd"
}
"passwd:Onlyrootcanspecifyausername."{
exit
}
}
expect{
"RetypenewUNIXpassword:"{
send"$newpasswd"
}
}
#---------------------------------------------加入
expect-re$cmd_prompt
exit
ok调试完也快要消费了一个下战书
第二种***经由过程shell剧本完成批量变动暗码
#!/bin/bash
#BYkerryhu
#MAIL:king_819@163.com
#BLOG:http://kerry.blog.51cto.com
#PleasemanualoperationyumofbeforeOperation.....
1、创建信托干系
192.168.9.203为办理机
192.168.9.201192.168.9.202为近程linux办事器
1、在办理机天生证书、
[root@manage~]#ssh-keygen-trsa(然后一起回车)
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/root/.ssh/id_rsa.(私钥)
Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.(公钥)
Thekeyfingerprintis:
36:ec:fc:db:b0:7f:81:7e:d0:1d:36:5e:29:dd:5b:a0
2、将办理机上的公钥传送到各近程办事器
如近程办事器变动了默许的ssh端标语,就利用scp-P17173,17173为端标语
[root@manage.ssh]#scpid_rsa.pub192.168.9.201:/root/.ssh/authorized_keys
[root@manage.ssh]#scpid_rsa.pub192.168.9.202:/root/.ssh/authorized_keys
办理机与近程主机信托干系创建终了
注重:大概会呈现并未创建信托干系的情形。还需操纵一下步调
<pstyle="padding:0px;margin:0px;clear:both;height:auto;overflow:hidden;color:rgb(85,85,85);font-family:宋体,ArialNarrow,arial,serif;font-size:14px;line-height:28px;">在GNOME下设置ssh-agent
假如你在GNOME运转情况下,实行以下几步设置ssh-agent.ssh-agent工具用户保留你的DSA密钥passphrase以便每次ssh大概scp到MachineB的时分.当你上岸GNOME,openssh-askpass-gnome提醒输出passphrase并保留,直到你加入GNOME.在该GNOMEsession中,当ssh大概scp毗连到MachineB时,体系将不再请求你输出passphrase.
在GNOMEsession中保留passphrase操纵步调:
1.选择MainMenuButton(在Panel上)=>Preferences=>MorePreferences=>Sessions,点击StartupPrograms标签.点击Add而且在StartupCommand文本框中输出/usr/bin/ssh-add.设定一个低于任何一个已存在的下令的优先级数字,以包管它最初被实行.一个好的ssh-add优先级数字为 |
|