OS + Linux check port tools / telnet / ssh / curl / wget / pssh

s

PSSH简介与配置

https://zhuanlan.zhihu.com/p/440697720

pssh 全称为 parallel-ssh,是一个用 Python 编写的可以并发在多台服务器上批量执行命令的工具。提供了一系列命令如pssh、pscp、prsync、pnuke 和 pslurp,支持远程并行执行命令、杀掉进程、复制文件等等,是十分方便的批量管理主机的命令。使用 pssh 相关命令时不需要在受控节点上安装任何类似 agent 的东西,只需要在管理节点上安装 pssh,然后让管理节点可以通过 ssh 登录受控节点即可。在容器化大行其道的今天,对机器节点本身进行操作的需求在减少,但是 pssh 命令仍然有它适合的使用场景。

配置实验环境

使用下面的 docker-compose 相关文件可以快速搭建一个 pssh 实验环境,以快速体验 pssh 命令。使用前需要安装 docker 和 docker-compose ,这里不再赘述。

安装 pssh 和配置相关细节参考文件内容。

将以下文件放到同一个目录中,目录名为 psshcompose。

Dockerfile

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install -y openssh-server
RUN service ssh restart
RUN apt-get install -y iputils-ping
RUN apt-get install -y net-tools
RUN apt-get install -y telnet
RUN apt-get install -y netcat
RUN apt-get install -y vim
RUN apt-get install -y curl
RUN apt-get install -y pssh

RUN mkdir /root/.ssh
RUN chmod 700 /root/.ssh

COPY ./id_rsa.pub /root/.ssh/id_rsa.pub
RUN chmod 600 /root/.ssh/id_rsa.pub

COPY ./id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
RUN chmod 644 /root/.ssh

# 自动确认主机指纹并添加到 known_hosts ,不需要手动填 yes
RUN echo "StrictHostKeyChecking no" > /root/.ssh/config
RUN chmod 644 /root/.ssh/config

# pssh 需要用到的主机列表, ~/.ssh/config 的 hostname
COPY ./hosts.txt /hosts.txt

# 别名
RUN echo "alias pssh='parallel-ssh'" >> /root/.bashrc
RUN echo "alias pscp='parallel-scp'" >> /root/.bashrc
RUN echo "alias pslurp='parallel-slurp'" >> /root/.bashrc
RUN echo "alias prsync='parallel-rsync'" >> /root/.bashrc
RUN echo "alias pnuke='parallel-nuke'" >> /root/.bashrc

docker-compose.yml

version: "3"

services:
  master:
    image: ubuntu:psshtest
    command: tail -f /dev/null

  worker0:
    image: ubuntu:psshtest
    command: /usr/sbin/sshd -D

  worker1:
    image: ubuntu:psshtest
    command: /usr/sbin/sshd -D

  worker2:
    image: ubuntu:psshtest
    command: /usr/sbin/sshd -D

  worker3:
    image: ubuntu:psshtest
    command: /usr/sbin/sshd -D

hosts.txt

worker0
worker1
worker2
worker3

id_rsa

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA8pwQXUaPyiRH8jjaws8q4pKygb01skWbiFZGnRoGhkrbP1Fh
lV7f5ELRBgz4BTPEzwZ+CGH9E57h3UiUuVcjfFnmOdxz67Ra+YxNbr4algFzRn0N
XXw9q9b3so2oul6vzYcKeE/nHQUNvLiO8Ugqs4Ii6pX5jxOr2K2uwqeAgf0tQ5fN
V7WFjta8E/rk3jf9FDhzj9+is1Hrd1Gf/iLvEke4JjgZOiNXnBRIN5iqOPF6FHWi
IbOXYuv9V671tk1rtDRZwEcxHZpQd7s354uhouCzcdlrcBz3GYApqAOG5UxDi6Ee
w6ouO8V6M1G5ML93YBDlcRW/4QdB3uMAQ4pd5wIDAQABAoIBAQDCjUpGMo6ecKfN
Y7ByZoWiejdx+RR1aIKIO3+W/kbbLG5TgWR6z0FGIBrU+lNugIxD5JXvDP1Q3amM
tWamlm1bjBAmuFWxX8lQsyVpOEPDpVgW37N3E2m1QscRxa3X/pSGgdNwlcrlJ6dT
fsEKVm//0c1ER46AISs+sFEjwgU4twn4owxtfdcxqfbDBFLxsnbwSVABjmRRQ7ke
hhAHK/ulBcQ/C7eEkTcNT/M2RFJ+lnow1tfRAL1tpAo9VX/Bjl5CSSVrNEchml1r
xv5IGuJMUge8+VfKdOQ4G8tL+wk2/Tyf2IOV05TxIfmRZ+tWx5VNX6ERRPk9jsfH
4qU3iU9JAoGBAPxEXKZSE0Zxek8YKXTmgg2oLgakgNmyGXMN7xPwhYRU3ATklz7A
fr0Bfkhkd+dDnwo0QSQVb5KNzBdeCfjWVvakY0KrD4Tpz45vrQCeO6oi7eGRHEfV
tls0t08DZZGbp8KyNUl4pKplRYE3HwNy/p+IKarunshW/FYMAAZxzdstAoGBAPYz
HiePYIhAaaEQv661BgSHmGHUHl2b1CYAW8nHST2W/F7F7CDipnssS3WaCAb/gfIg
jA1F84bkwO6k1dMrGAFeyit3eAIjfG+Dub3EUjXdA4+8/VEZnZ1nWqEO4g9UEIRF
9UdPFozhSO5G0h4U1Ye+UNTidsKHiy9c76AlhDnjAoGAX/IoQuHojtxOJpMMAXhC
cqtKhiA/GY1RfJ8KFU1fmssju4CtvaI9Eenle+cqa30emiTxuaWlf9oKi8CqjkgH
X1t6nTqudmDvHj9/T0LfcoBCdY5ZcUDpUJsmNRkXol/PWI+rELyf9Gb8Hn82fntY
OJjzMB39qjjbVGbQA6N5JikCgYAPA+0Z4o+zn6IRlbDrGdVFH3P2u3YipWdZ7fmr
I8FexT+dFBsjok8fAgOUJ5HHw3uMZdnE0XhZyMfPhjQYTe+H3d0cq4uhLcLgFjuU
zE1rRZB7Cr60XIiVWgFYA01cO/dJ6e5crAEnFHJbPeyAsyqWvc+2PB2cHaIqgFOJ
A+C9mwKBgHaE6NhBQSW13A6t5evKYOVor2fXWjedIcZQ39jiQyedg5XZrKj2t1zu
g5kaF4sMHnyKPPtrnFwObUs5cXH7JAAWHbwQwqVyNIoS41QZP+aw+t4U6HM9g//Q
bzAQrNNvu8G/YwzrDep5g21NpGHwVj5s/a0Ga16Z0vHX378ZxxYo
-----END RSA PRIVATE KEY-----

id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDynBBdRo/KJEfyONrCzyrikrKBvTWyRZuIVkadGgaGSts/UWGVXt/kQtEGDPgFM8TPBn4IYf0TnuHdSJS5VyN8WeY53HPrtFr5jE1uvhqWAXNGfQ1dfD2r1veyjai6Xq/Nhwp4T+cdBQ28uI7xSCqzgiLqlfmPE6vYra7Cp4CB/S1Dl81XtYWO1rwT+uTeN/0UOHOP36KzUet3UZ/+Iu8SR7gmOBk6I1ecFEg3mKo48XoUdaIhs5di6/1XrvW2TWu0NFnARzEdmlB3uzfni6Gi4LNx2WtwHPcZgCmoA4blTEOLoR7Dqi47xXozUbkwv3dgEOVxFb/hB0He4wBDil3n root@33487cf46076

进行实验

依次执行以下命令初始化实验环境。

docker build -t ubuntu:psshtest .
docker-compose up -d
docker-compose exec master bash
pssh -v -p 1 -h hosts.txt -i 'echo "hello world"'

当出现以下结果时证明实验环境配置成功。

[1] 08:10:27 [SUCCESS] worker0
hello world
[2] 08:10:27 [SUCCESS] worker1
hello world
[3] 08:10:27 [SUCCESS] worker2
hello world
[4] 08:10:28 [SUCCESS] worker3
hello world

pssh命令以及部分参数简介

pssh:在多台远程主机上并行执行命令
pscp:把文件并行复制到多台远程主机上
pslurp:把文件从多台远程主机上复制到本地
pnuke:在多台远程主机上并行杀掉某一进程(类似于killall命令)
prsync:使用rsync协议将文件从本地主机同步到多台远程主机上

--version:查看版本
--help:查看帮助,即此信息
-h:主机文件列表,内容格式”[user@]host[:port]”
-H:主机字符串,内容格式”[user@]host[:port]”
-:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-v:详细模式
-A:手动输入密码模式
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x
-i:每个服务器内部处理信息输出
-P:打印出服务器返回信息

命令示例

指定 worker0 主机运行date命令。

pssh -H worker0 -P date

查看一批主机 /etc/hosts 文件内容。

pssh -h hosts.txt -P 'cat /etc/hosts'

一批主机依次访问 ,指定最多同时有 1 个命令运行。

pssh -p 1 -h hosts.txt -P 'curl https://www.baidu.com'

参考链接

 

 

Linux测试端口的连通性的四种方法

 

目录

https://www.cnblogs.com/lijinshan950823/p/9376085.html#%E6%96%B9%E6%B3%95%E4%B8%89curl

方法一、telnet

telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式:

telnet ip port

说明:
ip:是测试主机的ip地址
port:是端口,比如80

如果telnet连接不存在的端口,那会如下图所示。

如果telnet 连接存在端口会出现如下图所示的内容,下图中以80端口为例。

1、Linux关闭telnet服务

操作方法:vi /etc/xinetd.d/telnet,将disable=no改成disable=yes;
2、将telnet设置为禁止开机自启动,操作方法:chkconfig telnet off;
3、使用命令server xinetd restart或者/etc/init.d/xinetd restart使更改生效;
4、删除telnet-server包,操作如下:rpm -e telnet-server--nodeps
5、vi /etc/services,注释23号端口

方法二、ssh

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性,具体用法格式如下:

ssh -v -p port username@ip

说明:
-v 调试模式(会打印日志)
-p 指定端口
username:远程主机的登录用户
ip:远程主机

如果远程主机开通了相应的端口,会有如下图所示的建立成功的提示

如果远程主机没有开通相应的端口,则如下图所示

 

方法三、curl

curl是利用URL语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性,具体用法:

curl ip:port

说明:
ip:是测试主机的ip地址
port:是端口,比如80

如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。。

方法四、wget

wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合,它也可以用来测试端口的连通性具体用法:

wget ip:port

说明:
ip:是测试主机的ip地址
port:是端口,比如80

如果远程主机不存在端口则会一直提示连接主机。

如果远程主机存在端口则会看到相应的信息,如下图所示。

 

end

posted @ 2020-08-14 09:55  siemens800  阅读(715)  评论(0)    收藏  举报