pssh实战_快速掌握linux下动态配管

周末抽空,写了个三千多字的教学文档,自我感觉技巧相比去年又有提升

这里摘选实验部分,方便以后查看~


yum安装pssh

yum -y install pssh

pssh --version


配置密钥对(略)...创建实验用户,配置免密

username="test1 test2"

for i in $username;do useradd $i;mkdir /home/$i/.ssh;cp ~/.ssh/id_rsa.pub /home/$i/.ssh/authorized_keys;chown -R $i:$i /home/$i;echo $i is create;done

配置首次ssh登录免提示

sed -i 's/^.*StrictHostKeyChecking.*$/StrictHostKeyChecking no/g' /etc/ssh/ssh_config


配置文件准备(模拟CMDB)

cat >/home/cmdb.csv<

配置编号,当前用户,负责人,所在项目

89757,test1,李雷,高数

89758,test2,韩梅梅,大物

EOF


2.2.1.2创建临时处理目录,生成一堆配置

mkdir -p /home/userinfo

cat /home/cmdb.csv|awk -F, '{print "######\n编号-"$1"\n当前用户:"$2"\n负责人:"$3"\n项目:"$4"\n######" > "/home/userinfo/"$2}'

cat > /home/userinfo/root <

你现在是root!超牛逼!慎用!

EOF

2.2.1.3用python启动临时http服务,80端口

cd /home/userinfo

nohup python -m SimpleHTTPServer 80 >& http80.log &

2.2.1.4制作动态用户登录提示脚本

mkdir $HOME/bin

cat >$HOME/bin/loginfo.sh<

#!/bin/bash

echo "本机ip:"

ip a|grep eth0|grep inet|awk '{print substr(\$2,0,length(\$2)-3)}'

curl -sL http://127.0.0.1/\`whoami\`

EOF

——这里选了eth0网卡上的IP写入提示,实际根据你的网卡情况调整

2.2.1.5在当前用户下做登录配置

echo "sh \$HOME/bin/loginfo.sh" >> ~/.bash_profile

配完之后,进进出出感受一下,登录提示



2.3初体验pssh批量管理

2.3.1.1准备一个目标受控机器清单

格式为 用户名@IP,一行写一条,需要在目标IP服务器的指定用户下,已存在能跟本机私钥配对的公钥,可参考本文2.1.1.1~2.1.1.2章节内容

echo -e "[email protected]

[email protected]" >hostlist

2.3.1.2批量操作受控机,查看时间地点用户名

pssh -vh hostlist -i "date;pwd;whoami"

2.3.1.3把动态用户登录提示脚本放置到下载目录下

cp ~/bin/loginfo.sh /home/userinfo/

2.3.1.4通过pssh把脚本发放到两个测试用户下

pssh -h hostlist -i "mkdir \$HOME/bin;wget -q -O \$HOME/bin/loginfo.sh http://localhost/loginfo.sh;echo 'sh \$HOME/bin/loginfo.sh' >> ~/.bash_profile"

此时,可以使用su - test1 ,或者ssh test2@localhost,进进出出感受一下动态的提示



2.4深入体验批量管理远端配置

现在,你最好准备另外一台和当前机器网络互通的实验机,如果没有,也可以继续在一台机器上分裂多用户。

2.4.1.1准备远端受控实验机

假设我现在有两台虚拟机,一个是前面实验使用的机器作为master,新增一个受控实验机node1

机器名hostname IP地址 角色

master 192.168.1.111 控制机

node1 192.168.1.112 受控机

登录node1,记录hosts文件,创建测试用户test3:

echo -e "192.168.1.111 master

192.168.1.112 node1" >> /etc/hosts

useradd test3

随后,切换到测试用户下,写入公钥内容(控制机master上~/.ssh/id_rsa.pub),并修改文件权限

su - test3

mkdir .ssh && vi .ssh/authorized_keys

#写入公钥后保存文件,修改权限

chmod 700 .ssh;chmod 600 .ssh/authorized_keys

都准备好之后,即可退出受控机node1,回到一开始使用的控制机master继续执行


2.4.1.2回到控制机master,同样配置hosts

echo -e "192.168.1.111 master

192.168.1.112 node1" >> /etc/hosts

2.4.1.3更新hostlist,试试新用户通吗

echo "test3@node1" >>hostlist

pssh -H node1 -i "date;pwd;whoami"

2.4.1.4优化一下登录提示脚本

#把请求地址从本机改为指向master

sed -i 's/127.0.0.1/master/g' /home/userinfo/loginfo.sh ~/bin/loginfo.sh

#如果实验机都有公网出口IP,则可以进一步做以下修改

cp ~/bin/loginfo.sh ~/bin/loginfo_localIP.sh

sed -i '3s/^.*$/curl ipinfo.io\/ip -w "\n"/g' /home/userinfo/loginfo.sh ~/bin/loginfo.sh

2.4.1.5更新用户配置文件

cat >>/home/cmdb.csv<

89759,test3,小强,模电

EOF

tail -1 /home/cmdb.csv|awk -F, '{print "######\n编号-"$1"\n当前用户:"$2"\n负责人:"$3"\n项目:"$4"\n######" > "/home/userinfo/"$2}'

2.4.1.6用pscp批量更新脚本

awk -F@ '{ cmd="pscp.pssh -H " $2 " -l " $1 " -r /root/bin /home/"$1;print cmd;system(cmd)} ' /home/hostlist

2.4.1.7检查有无登录动作,没有则添加

pssh -h hostlist -i "grep -q loginfo ~/.bash_profile || echo 'sh \$HOME/bin/loginfo.sh' >> ~/.bash_profile"

分别登录test1,test2,test3,进进出出感受一下

2.4.1.8关闭http服务,销毁用户和配置

#停http服务

ps -ef|grep "python -m SimpleHTTPServer 80"|grep -v grep |awk '{print $2}'|xargs kill-9 >& /dev/null

#删除测试用户

username="test1 test2"

for i in $username;do userdel -f $i;rm -rf /home/$i;done

#删除配置

cd /home && rm -rf cmdb.csv hostlist userinfo

你可能感兴趣的:(pssh实战_快速掌握linux下动态配管)