pssh

介绍pssh批量操作的功能。

  1. centOS禁止开启防火墙
    systemctl stop firewalld.service # 关闭firewall
    systemctl disable firewalld.service # 禁止firewall开机启动

输出
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

  1. 下面的问题是批量执行命令。
    首先想起scp命令,进一步研究发现是security copy的意思。跨机器读写,用scp命令。Ref: https://www.cnblogs.com/likui360/p/6011769.html
    但是,批量发送命令怎么办?想起的操作手册文档,里面有个pssh。百度了一下。
  1. 安装pssh
    由于google屏蔽,我先下载到本地,然后通过MobaXterm中的sftp上传到主节点。后面的步骤一样的。主要要切换到root账号,不然权限不够。安装完毕以后,查看pssh版本。

    1
    2
    3
    4
    5
    wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
    tar xf pssh-2.3.1.tar.gz
    cd pssh-2.3.1/
    python setup.py install
    pssh --version
  2. 配置IP映射
    有一个相似的任务是修改主机名,比如master,slave01,slave02

修改自己所用节点的IP映射

  1. SSH免密钥登陆

scp ~/.ssh/id_rsa.pub root@slave01:/root
这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。
首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):

1
2
3
1.	cd ~/.ssh               # 如果没有该目录,先执行一次ssh localhost
2. rm ./id_rsa* # 删除之前生成的公匙(如果有)
3. ssh-keygen -t rsa # 一直按回车就可以

Shell 命令
让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:
1. cat ./id_rsa.pub >> ./authorized_keys
Shell 命令
完成后可执行 ssh Master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:
1. scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
Shell 命令
scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:
通过scp向远程主机拷贝文件
接着在 Slave1 节点上,将 ssh 公匙加入授权:

1
2
3
1.	mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
2. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
3. rm ~/id_rsa.pub # 用完就可以删掉了

Shell 命令
如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。
这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验,如下图所示:
1. ssh Slave1

  1. 批量发送命令测试

pssh -h /root/hosts -i uptime
Ref:
[1]. pssh命令: http://man.linuxde.net/pssh
[2]. Linux下批量管理工具pssh: https://blog.csdn.net/chengxuyuanyonghu/article/details/64457409

  1. 批量关闭防火墙
    还是不敢尝试,但是测试了新建和删除文件夹,是成功的。
    pssh -h /root/hosts -i mkdir /testpssh
    pssh -h /root/hosts -i rm -rf /testpssh