自动创建用户并免秘钥登录

#!/bin/bash  
host_name=(
wyl01
wyl02
wyl03
)

host_ip=(
10.10.252.151 
10.10.251.101 
10.10.252.117
)

#1 步骤输出 紫色
#2 正确输出 绿色
#3 错误输出 红色
#4 提示输出 蓝色
#5 警告输出 黄色
function echo_fun(){
  if [ $# -ge 2 ];then
     params_num=$1
     shift 1
     params_mes=$@
  else
    echo_fun 3 请至少输入两个参数 echo_fun ..
    exit
  fi
  case $params_num in
        1)
        echo -e "\033[35;40;1m ****************************** ${params_mes} ******************************\033[0m\r\n"
        ;;
        2)
        echo -e "\033[32;40;1m ${params_mes}\033[0m\r\n"
        ;;
        3)
        echo -e "\033[31;40;1m ${params_mes}\033[0m\r\n"
        ;;
        4)
        echo -e "\033[36;40;1m ${params_mes}\033[0m\r\n"
        ;;
        5)
        echo -e "\033[33;40;1m ${params_mes} \033[0m\r\n"
        ;;
        *)
        echo_fun 3 参数异常第一个参数应为1,2,3,4,5
        ;;
   esac
}



#修改配置内容,需要免密码登录的用户

function add_user(){

echo_fun 1 添加用户,并设置免秘钥登录
echo_fun 5 请输入用户名:
read user
username=${user}

echo_fun 5 请输入用户密码:
read pass
password=${pass}

echo -e "\n"
for ((i=0;i<${#host_name[*]};i++))
do
echo_fun 4  ${host_name[i]}机器添加用户,并设置密码
ssh -Tq ${host_name[i]} <<remotessh
useradd -d /home/$username $username
expect -c"
 spawn passwd $username
 expect {
     \"*yes/no*\" {send \"yes\r\";exp_continue}
     \"*New password:*\" {send \"${password}\r\";exp_continue}
     \"*Retype new password:*\" {send \"${password}\r\";exp_continue}
}"
exit
remotessh
echo -e "\n"
done
}




#创建秘钥
function ssh_keygen_fun(){
echo_fun  4 创建秘钥
su - $username <<EOF
 expect -c"
    spawn  ssh-keygen -t rsa
      set timeout 30
      expect {
        \"*.ssh/id_rsa*\" {send \"\r\";exp_continue}
        \"*Overwrite*\" {send \"y\r\";exp_continue}
    \"*empty for no passphrase*\" {send \"\r\";exp_continue}
        \"*Enter same passphrase again:*\" {send \"\r\";exp_continue}
      }
  "
EOF
if [ $? -eq 0 ];then
 echo_fun 2 创建秘钥成功
else
 echo_fun 3 创建秘钥失败
fi
}


#免密钥到其他机器
copy_ssh_keygen(){
echo_fun 4 当前用户和机器免疫到集群的其他机器 
for ((i=0;i<${#host_name[*]};i++))
do
su  $username<<EOF
expect -c"
 spawn ssh-copy-id -i /home/$username/.ssh/id_rsa.pub $username@${host_name[i]}
 expect {
     \"*yes/no*\" {send \"yes\r\";exp_continue}
     \"*password:*\" {send \"$password\r\";exp_continue}
  }"
EOF
done
if [ $? -eq 0 ];then
  echo_fun 2 设置免秘钥成功
else
  echo_fun 3 设置免秘钥失败
fi
}
add_user
ssh_keygen_fun
copy_ssh_keygen

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
切换用户,验证一下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值