加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell expect自动化创建用户,修改密码,多台机器一键免秘钥登录

发布时间:2020-12-15 16:58:02 所属栏目:安全 来源:网络整理
导读:1.创建用户–50台机器上创建用户,不可能手动去干的。 useradd.sh中的代码: #!/bin/bash user=cowpassword=cowuseradd -d /home/ $user $user expect EOF spawn passwd $user expect "New password:" send " ${password} r" expect "Retype new password:"

1.创建用户–50台机器上创建用户,不可能手动去干的。

  • useradd.sh中的代码:
#!/bin/bash 
user=cow
password=cow
useradd -d /home/$user $user
expect << EOF  
spawn passwd $user  
expect "New password:"  
send "${password}r"  
expect "Retype new password:"  
send "${password}r"  
expect eof;  
EOF
  • 执行该代码:
  • 单台机器上执行该脚本那么多台机器呢?
    • 还记得之前我们用过salt的这个工具么?
      1.将该脚本传到其他机器上。只是一条指令就可以了。

      这样就将该脚本传到所有的机器上了,*代表所有。

2.执行该脚本。我们以s2这个机器为例,如果所有那么也要用*表示

这里就是所有机器上执行创建用户并设置密码,当然所有的机器上都要安装expect否则就出现下面的错误:

2.修改创建用户后的密码:

  • repasswd.sh中的 内容:
#!/bin/bash 
USER=wyl2
NPASS=wylwyl2
expect << EOF  
spawn passwd  $USER
expect "New password:"  
send "${NPASS}r"  
expect "Retype new password:"  
send "${NPASS}r"  
expect eof;  
EOF
  • 执行该脚本后的效果图:

3.创建好用户,则可能需要各个机器之间的免秘钥登录:

  • 该脚本中的内容
#!/usr/bin/expect 
set timeout -1
#修改配置内容,需要免密码登录的用户
set user ooo
set password ooo
#需要免密码登录的机器
set ipmaster bgs-5p173-wangwenting
set ipslave2 bgs-5p174-wangwenting
set ipslave3 bgs-5p175-wangwenting
set path /home/$user
#创建秘钥
spawn ssh-keygen -t rsa
expect {
        #第一次需要输入的enter键,exp_continue如果没有捕获到该信息的时候就跳过这个行为,执行下一次的行为。
        ".ssh/id_rsa" {send "r";exp_continue}
        "Overwrite" {send "yr";exp_continue}
        "(empty for no passphrase):" {send "r";exp_continue}
        "Enter same passphrase again" {send "r";exp_continue}
}
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipmaster
expect {
 "*yes/no*" { send "yesr"; exp_continue}
 "*password:" { send "$passwordr" }
 }
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipslave2
expect {
 "*yes/no*" { send "yesr"; exp_continue}
 "*password:" { send "$passwordr" }
}
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipslave3
expect {
 "*yes/no*" { send "yesr"; exp_continue}
 "*password:" { send "$passwordr" }
}
expect eof

4.至于expect的内容,自行百度。

expect的材料
expect的教程

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读