远程批量修改linux服务器密码的脚本.docx

上传人:b****1 文档编号:2412742 上传时间:2023-05-03 格式:DOCX 页数:14 大小:19.89KB
下载 相关 举报
远程批量修改linux服务器密码的脚本.docx_第1页
第1页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第2页
第2页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第3页
第3页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第4页
第4页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第5页
第5页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第6页
第6页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第7页
第7页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第8页
第8页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第9页
第9页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第10页
第10页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第11页
第11页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第12页
第12页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第13页
第13页 / 共14页
远程批量修改linux服务器密码的脚本.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

远程批量修改linux服务器密码的脚本.docx

《远程批量修改linux服务器密码的脚本.docx》由会员分享,可在线阅读,更多相关《远程批量修改linux服务器密码的脚本.docx(14页珍藏版)》请在冰点文库上搜索。

远程批量修改linux服务器密码的脚本.docx

远程批量修改linux服务器密码的脚本

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

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

公司现在有100多台服务器,需要对服务器进行批量的修改root密码,还要在每台服务器新建一个用户,如果一个一个登到的服务器上进行修改的话,估计一个下午又没有了,首先想到的是我最喜欢的php,其中有个ssh2模块,不得不承认用php来处理这样的任务是一件很纠结的事情,然后又想到了用shell,不过发现很快就写不下去了,shell的交互能力还是不能让人恭维的,最后发现了expect,expect以其强大的交互能力,无疑是处理这类任务的首选,再加上expect可以内嵌shell,这使得他变得更强大。

首先要有一个服务器的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"\nwelldone\n"

下面是最重要的部分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\r"

}-re"assword:

"{

send"$loginpass\r"

}-re"Permissiondenied,pleasetryagain."{

exit

}-re"Connectionrefused"{

exit

}timeout{

exit

}eof{

exit

}

}

expect{

-re"assword:

"{

send"$loginpass\r"

}

-re$cmd_prompt{

send"\r"

}

}

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

send"passwd$passuser\r";

expect{

"NewUNIXpassword:

"{

send"$newpass\r"

}

"passwd:

Onlyrootcanspecifyausername."{

exit

}

}

expect{

"RetypenewUNIXpassword:

"{

send"$newpass\r"

}

}

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

expect-re$cmd_prompt

sleep1

send"useradd$newusername\r"

sleep1

send"passwd$newusername\r";

expect{

"NewUNIXpassword:

"{

send"$newpasswd\r"

}

"passwd:

Onlyrootcanspecifyausername."{

exit

}

}

expect{

"RetypenewUNIXpassword:

"{

send"$newpasswd\r"

}

}

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

expect-re$cmd_prompt

exit

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

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

#!

/bin/bash

#BYkerryhu

#MAIL:

king_819@

#BLOG:

#PleasemanualoperationyumofbeforeOperation.....

一、建立信任关系

192.168.9.203为管理机

192.168.9.201 192.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

 

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

注意:

可能会出现并未建立信任关系的情况。

还需操作一下步骤 

在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优先级数字为70或者70以上.优先级数字越大,优先级别越低.如果有其他的程序,这个程序(ssh-add)应该是最低的优先级.点击Close退出.

2.重新登陆GNOME,也就是重启X.GNOME起动后,出现一个对话框要求你输入passphrase(s).如果你已经配置了DSA和RSA密钥对,系统将提示你都输入.以后,使用ssh,scp,或者sftp都不再要求你输入密码了.

非X环境下配置ssh-agent

如果没有运行X,则按照以下步骤配置ssh-agent.如果GNOME在运行但是你不想在你登陆的时候提示输入passphrase,以下过程将在终端窗口,例如XTerm上操作.如果你运行的X不是GNOME,以下操作将在终端窗口上操作.然而,你的passphrase仅被该终端窗口记住,而不是全局设定

1.在shell提示符下输入以下命令:

exec/usr/bin/ssh-agent$SHELL

2.输入命令:

ssh-add

输入你的passphrase(s).如果你已经配置多对密钥,系统将提示你挨个输入.

3.退出系统后,passphrase(s)将会被释放.当从虚拟控制台或者终端窗口登陆时,每次都必须执行这两条命令.

 

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

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

usage:

mkpasswd[args][user]

 whereargumentsare:

   -l#     (lengthofpassword,default=10)

   -d#     (min#ofdigits,default=2)

   -c#     (min#oflowercasechars,default=2)

   -C#     (min#ofuppercasechars,default=2)

   -s#     (min#ofspecialchars,default=1)

   -v       (verbose,showpasswdinteraction)

   -pprog  (programtosetpassword,default=passwd)

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

mkpasswd-l8-C3,好了,密码就会按你的要求随机产生了

 

yum-yinstallexpect

 

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

[root@manage.ssh]#catip_list.txt

192.168.9.201

192.168.9.202

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

 

#!

/bin/bash

#==============Thoughsshremoteserver,automodifyROOTpasswd=============#

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

do

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

TMP_PWD=`mkpasswd-l8-C3`红色字体可以写成自己需要的密码

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

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

 

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

if[$?

=0];then

  ssh$IPpasswdroot--stdin

  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.txtiscreatefail\tpleasecheck!

\t">>M_pass.log

fi

if[$?

=0];then

  echo-e"$(date"+%Y-%m-%d%H:

%M:

%S")\tThe${IP}passwdismodifyOK\t" >>M_pass.log

else

  echo-e"$(date"+%Y-%m-%d%H:

%M:

%S")\tThe${IP}passwdismodifyfail\tpleasecheck!

\t" >>M_pass.log

fi

done

第二种方法的另一个实例

    建立SSH信任

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

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

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

    1.

    A主机生成公,私钥证书

    

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

    Generatingpublic/privatersakeypair.(以下一路回车)

    Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):

    /root/.ssh/id_rsaalreadyexists.

    Overwrite(y/n)?

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

    Enterpassphrase(emptyfornopassphrase):

    Entersamepassphraseagain:

    Youridentificationhasbeensavedin/root/.ssh/id_rsa.(私钥)

    Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.(公钥)

    Thekeyfingerprintis:

    c1:

26:

cc:

88:

2b:

05:

dd:

c3:

6b:

1e:

78:

5d:

da:

9c:

da:

8a

    [email=root@buddytj-10]root@buddytj-10[/email]

    

    证书就生成了。

id_rsa(私钥)||id_rsa.pub(公钥)

    2.

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

    [root@buddytj-10.ssh]#scpid_rsa.pub60.28.*.*:

/root/.ssh/

    3.

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

    [root@buddytj-11.ssh]#mvid_rsa.pubauthorized_keys

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

    超EASY

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

    二

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

    修改B主机的密码SHELL

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

    #ssh60.28.*.*passwdroot--stdin三

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

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

!

!

!

!

!

!

!

!

!

!

!

!

!

!

    批量SHELL小例,其中还有些不完善的地方!

使用中请注意

    

    #!

/bin/bash

    ###################Thoughsshremoteserver,automodifyROOTpasswd###########

    

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

    

    do

    

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

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

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

    

    R_HOSTNAME=`ssh$IPcat/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$IPpasswdroot--stdin

    if[$?

=0];then

    echo"The$R_HOSTNAME($IP)passwdismodifyOK"

    else

    echo-e"The$R_HOSTNAME($IP)passwdismodifyfail\n"

    echo"pleaseyoucheck"

    fi

    done

试验成功的脚本

1,建立信任关系

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

1,在主机A用户hcwang(e.g.)上生成密钥对。

  $ssh-keygen-trsa

2,进入.ssh目录

  $mvid_rsa.pubauthorized_keys //(更改为系统默认的公钥文件名)

3,将公钥id_rsa.pub,传输到主机目标主机B,C

  $scpid_rsa.pubB:

$HOME/.ssh

  $catid_rsa.pub>>authorized_keys//如果没有authorized_keys,则执行mvid_rsa.pubauthorized_keys

  同样对主机C

  $scpid_rsa.pubC:

$HOME/.ssh

  $catid_rsa.pub>>authorized_keys

  到此,可以从主机A直接SSH到主机B,C,无需密码。

如果想从主机B或者C,SSH到主机A,或者主机BC之间互相SSH,则需要密码。

解决办法如下:

4,将主机A的私钥,id_rsa拷到主机B和C的$HOME/.ssh目录下

  $scpid_rsaB:

$HOME/.ssh

  $scpid_rsaC:

$HOME/.ssh

~OK 

2,创建IP列表(需要修改账号密码的IP地址)

[root@test~]#catip_list.txt

192.168.10.126

192.168.10.127

192.168.10.128

3,编写SHELL脚本

[root@test~]#cat1ch.sh

#!

/bin/bash

#==============Thoughsshremoteserver,automodifyROOTpasswd=============#

forIPin`cat/root/iplist`

do

#=========================mkpasswd==========================#

#TMP_PWD=`jiguang`

R_PWD=`echo"jiguang"`

echo"jiguang">R_PWD.txt

#===========================CHPASSWD========================#

if[$?

=0];then

ssh$IPpasswdroot--stdin

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.txtiscreatefail\tpleasecheck!

\t">>M_pass.log

fi

if[$?

=0];then

echo-e"$(date"+%Y-%m-%d%H:

%M:

%S")\tThe${IP}passwdismodifyOK\t">>M_pass.log

else

echo-e"$(date"+%Y-%m-%d%H:

%M:

%S")\tThe${IP}p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2