美文网首页
pssh实战_快速掌握linux下动态配管

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

作者: 魔法学徒之歌 | 来源:发表于2022-07-04 11:29 被阅读0次

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

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

    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<<EOF

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

    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 <<EOF

    你现在是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<<EOF

    #!/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 "test1@127.0.0.1

    test2@127.0.0.1" >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<<EOF

    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下动态配管

          本文链接:https://www.haomeiwen.com/subject/zqjdbrtx.html