[工具] 分布式系统下批量创建用户及分发公钥打通ssh通道的脚本

在分布式系统下偶尔会有这样的需求,要增加一个服务时,需要在集群的所有节点上创建同一个用户,然后打通ssh通道,再分发软件包、配置、执行命令、启动服务...

这个问题的根源是如何集中配置和管理系统,专业运维应使用如puppet等工具。但有时图简单或其它原因,不愿走puppet,这里给自己记几个简单的脚本备忘(前题条件:已经打通root的ssh通道,或另一个有sudo权限的用户):

批量创建用户,参数:私钥、用户名、组名;要求有一个ip.list机器列表;

#!/bin/bash

if (( $# < 2 )); then
  echo "Usage: $0 <primary_key_path> <user_name> [group_name]"
  exit 1
fi

#pri_key is the path of your primary key
pri_key=$1
user_name=$2
group_name=$user_name
if (( $# == 3 )); then
  group_name=$3
fi

home_dir=/application/$user_name

for i in `cat ip.list`; 
do
  ssh -i $pri_key root@$i "groupadd $group_name; useradd -s /bin/bash -g $group_name -d $home_dir -m $user_name; chown -R $user_name:$group_name $home_dir" 1>result/$i.out 2>&1 &
done

 

分发公钥及打通ssh通道:

#!/bin/bash

if (( $# < 3 )); then
    echo "Usage: $0 <your primary key path> <user_name> <user's pub key>"
        exit 1
fi

#pri_key is the path of your primary key
pri_key=$1
user_name=$2
pub_key=$3
pub_key_fn=`basename $3`

home_dir="/application/$user_name"
tmpkey_path="/tmp/tmpkey"

for i in `cat ip.list`; do
  scp -i $pri_key $pub_key root@$i:$tmpkey_path && \
  ssh -i $pri_key root@$i "echo 'password' | sudo -S -u $user_name mkdir -p $home_dir/.ssh && sudo -u $user_name bash -c 'cat $tmpkey_path >> $home_dir/.ssh/authorized_keys'" 
done

 

转载于:https://www.cnblogs.com/ZisZ/p/3449392.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值