天天看点

shell自动化部署批量建立用户和批量SSH配置

脚本如下: 

批量建立用户的脚本cuser.sh: 

Shell代码  

shell自动化部署批量建立用户和批量SSH配置
  1. if [  !  $# -eq 2  ] ; then  
  2. echo "请输入用户名和密码以空格分开!"  
  3. exit  
  4. else  
  5. name="$1"  
  6. passwd="$2"  
  7. fi  
  8. cat hosts | while read hosts  
  9. do  
  10. echo "正在$hosts上用户$name"  
  11. expect <<EOF  
  12. spawn   ssh $hosts "useradd $name; echo $name:$passwd | chpasswd"   
  13. expect {  
  14. "*yes/no" {send "yes\r" ;exp_continue}  
  15. "*password:" {send "dongliang\r" ;exp_continue  }  
  16. }  
  17. EOF  
  18. echo  "成功建立"  
  19. done  

root用户初始化脚本,initroot.sh 

Shell代码  

shell自动化部署批量建立用户和批量SSH配置
  1. if [  ! $# -eq 2  ] ;then  
  2. echo "请输入用户密码以空格分开"  
  3. exit  
  4. else  
  5. #用户名  
  6. uname="$1"  
  7. #密码  
  8. passwd="$2"  
  9. fi  
  10. #执行检测并安装expect模块  
  11. ep=`rpm -qa | grep expect`   
  12. if [ -z $ep   ] ; then  
  13.  echo "检测到你的系统,没有安装expect模块,准备执行安装"  
  14.  sleep 2  
  15.  yum install -y expect  
  16. else  
  17.  echo "已经安装expect模块,3秒后,开始执行ssh文件同步"  
  18.  sleep 3  
  19. fi  
  20. #公钥无ssh认证模块  
  21. cat hosts | while read host  
  22. do  
  23. echo "当前正在向$host上传输ssh文件"  
  24. expect <<EOF  
  25. spawn  scp -r .ssh/  $host:/$uname   
  26. expect {  
  27. "*yes/no" {send "yes\r" ;exp_continue}  
  28. "*password:" {send "$passwd\r" ;exp_continue  }  
  29. }  
  30. EOF  
  31. echo "当前正在$host上进行公钥认证....."  
  32. sleep 2  
  33. expect <<EOF  
  34. spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host   
  35. expect {  
  36. "*yes/no" {send "yes\r" ;exp_continue}  
  37. "*password:" {send "$passwd\r" ;exp_continue  }  
  38. }  
  39. EOF  
  40. echo "认证成功...."  
  41. done  
  42. #切换root权限进行hosts文件分发  
  43. echo "同步本机的hosts文件到各个机器上"  
  44. sleep 1  
  45. #同步本机的hosts文件到其他各个机器上  
  46. cat hosts | while read host  
  47. do  
  48. scp -r /etc/hosts $host:/etc/  
  49. done  
  50. echo "同步hosts文件完毕"  

普通用户的安装脚本,noroot.sh 

Shell代码  

shell自动化部署批量建立用户和批量SSH配置
  1. if [ ! $# -eq 2  ] ; then  
  2. echo "请输入用户名密码以空格分开"  
  3. exit  
  4. else  
  5. #用户的名字  
  6. uname="$1"  
  7. #用户的统一密码  
  8. pd="$2"  
  9. fi  
  10. #公钥无ssh认证模块  
  11. cat hosts | while read host  
  12. do  
  13. echo "当前正在向$host上传输ssh文件"  
  14. expect <<EOF  
  15. spawn  scp -r .ssh/  $host:/home/$uname   
  16. expect {  
  17. "*yes/no" {send "yes\r" ;exp_continue}  
  18. "*password:" {send "$pd\r" ;exp_continue  }  
  19. }  
  20. EOF  
  21. echo "当前正在$host上进行公钥认证....."  
  22. sleep 2  
  23. expect <<EOF  
  24. spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host   
  25. expect {  
  26. "*yes/no" {send "yes\r" ;exp_continue}  
  27. "*password:" {send "$pd\r" ;exp_continue  }  
  28. }  
  29. EOF  
  30. echo "认证成功...."  
  31. done  

hosts文件示例: 

Java代码  

shell自动化部署批量建立用户和批量SSH配置
  1. 192.168.46.28  
  2. 192.168.46.29  
  3. 192.168.46.33  

使用说明书: 

Java代码  

shell自动化部署批量建立用户和批量SSH配置
  1. 脚本主要完成的功能:  
  2. 1,自动化批量建立用户  
  3. 2,自动化批量双向配置SSH认证  
  4. 3,测试通过Centos6.5,其他系统大同小异,如报错,可改部分代码  
  5. 使用步骤:  
  6. 1,配置集群的host文件,把所有机器的IP都写在hosts文件里,注意默认这几个文件解压在root根目录即可。  
  7. 2,先在第一台root用户上执行 ssh-keygen -t rsa -P ''一路回车生成ssh文件  
  8. 3,然后执行initroot.sh脚本,并传入root账号的用户名,密码,此脚本会首先检测系统是否安装过expect,如果没有  
  9. 安装,则yum下载,如果安装过,则直接进行ssh文件拷贝,并执行公钥认证  
  10. 4,执行cuser.sh脚本,并传入要建立用户的账号密码,就可以批量的在多个机器上建立用户了  
  11. 5,然后拷贝root跟目下下的hosts文件和noroot.sh文件到上面建的用  
  12. 户根目录下,并把权限改成用户权限  
  13. 6,然后切入刚才建立的账户,同样执行第2个步骤生成ssh文件  
  14. 7,最后执行noroot.sh文件,给刚才建的批量用户之间建立ssh双向无密码认证  
  15. 8,至此完成,批量用户创建和SSH认证。  

    转自:http://qindongliang.iteye.com/blog/2117973