如何使用pssh进行并行批量操作

pssh简介

pssh(Parallel SSH)是一个用于在多台远程服务器上并行执行命令的工具,它基于SSH协议,可以在不实际登录到每台服务器的情况下,将命令分发到目标服务器上执行,这样可以大大提高工作效率,特别是在需要对大量服务器进行操作时,pssh支持多种操作系统,包括Linux、macOS和Windows。

安装pssh

1、对于Linux和macOS系统,可以使用以下命令安装pssh:

如何使用pssh进行并行批量操作

pip install pssh

2、对于Windows系统,可以从以下网址下载预编译的二进制文件:https://github.com/robbyrussell/pssh/releases

下载完成后,解压缩文件并将可执行文件添加到系统的PATH环境变量中。

使用pssh的基本语法

pssh的基本语法如下:

pssh [options] -l users -A hosts command_to_run

options:可选参数,例如指定端口号、超时时间等。

-l users:要登录的目标服务器上的用户列表,用空格分隔。

-A hosts:要连接的目标服务器列表,用逗号分隔,如果不提供此参数,pssh会自动从~/.ssh/known_hosts文件中读取目标服务器的公钥。

command_to_run:要在目标服务器上执行的命令。

如何使用pssh进行并行批量操作

示例

假设我们有两台服务器,分别位于IP地址192.168.1.2和192.168.1.3上,用户名为user1和user2,我们需要在这两台服务器上同时执行lspwd命令,可以使用以下命令:

pssh -l user1,user2 -A 192.168.1.2,192.168.1.3 "ls; pwd"

常用选项

1、-l:指定要登录的用户列表,如上例所示。

2、-A:指定要连接的目标服务器列表,如上例所示。

3、-i:指定私钥文件的路径,默认情况下,pssh会在当前目录下寻找名为id_rsa(RSA密钥)或id_dsa(DSA密钥)的私钥文件,如果需要使用其他类型的私钥,可以通过此选项指定。

4、-P:指定SSH端口号,默认情况下,SSH端口号为22,如果需要使用其他端口号,可以通过此选项指定。

5、-C:指定连接超时时间(以秒为单位),默认情况下,连接超时时间为30秒,如果需要使用其他超时时间,可以通过此选项指定。

6、-o:指定SSH选项,可以使用此选项禁止密码认证,只允许密钥认证:

如何使用pssh进行并行批量操作

-o PubkeyAuthentication=yes -o PasswordAuthentication=no

相关问题与解答

Q1:如何查看已经连接的目标服务器?

答:可以使用以下命令查看已经连接的目标服务器:

pssh -l user | grep connected | awk '{print $1}' | xargs -I {} ssh {} exit || echo Connection failed for {}

Q2:如何在执行完命令后自动断开与目标服务器的连接?

答:可以使用以下命令实现自动断开连接:

pssh -l user | grep connected | awk '{print $1}' | xargs -I {} ssh {} exit || echo Connection failed for {} & sleep 10 && killall -9 sshd || echo Killing all ssh processes failed for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all ssh processes failed again for {} & sleep 5 && pkill -9 sshd || echo Killing all sh

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/190579.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-02 05:32
Next 2024-01-02 05:37

相关推荐

  • 如何连接云服务器到桌面?

    使用远程桌面连接(RDP)或第三方软件如Putty、Xshell等,通过云服务器的公网IP地址和相应端口进行连接。

    2024-10-25
    09
  • 如何在电脑上登录小米云服务器 (在电脑上怎么登陆小米云服务器)

    打开浏览器,输入小米云服务器网址,点击登录,输入账号密码即可。

    2024-03-19
    0191
  • 云服务器怎么使用企业认证的软件下载安装

    云服务器是一种基于互联网的计算服务,它可以为企业提供高效、安全、稳定的计算资源,在使用云服务器时,企业可能需要使用一些特定的软件,这些软件可能是企业内部开发的,也可能是第三方提供的,对于一些需要企业认证的软件,企业可以通过云服务器进行下载和安装,本文将介绍如何在云服务器上使用企业认证的软件下载。一、获取企业认证在使用企业认证的软件之前……

    2023-11-21
    0148
  • centosssh

    CentOS SSH是一种基于Linux的开源操作系统,它提供了一个强大的安全远程访问工具,用于在两台计算机之间建立加密的连接,通过SSH,用户可以在不同的网络环境中安全地执行命令、传输文件和进行其他交互操作,本文将介绍CentOS SSH的基本概念、配置和使用方法。一、CentOS SSH简介SSH(Secure Shell)是一种……

    2023-11-28
    0123
  • ssh远程软件

    SSH远程软件是用于安全访问和管理远程服务器的工具,支持SSH、SCP、SSH2等协议。这些软件包括开源免费的PuTTY、跨平台的Hyper、美观的Terminus、强大的KiTTY等。Termius是一款支持SSH与Telnet协议的连接工具,支持Windows系统,macOS,Linux,iOS以及Android等几乎支持所有主流平台,且内置sftp,使用一个工具即可同时登录服务器和传输文件。

    2024-02-14
    0207
  • 手机怎么使用vps

    在现代社会,VPS(Virtual Private Server,虚拟专用服务器)已经成为了许多个人和企业的首选,它提供了一种在物理服务器上创建多个独立环境的方法,使得每个用户都可以获得自己的操作系统和应用程序,对于许多用户来说,如何在远程控制VPS时进行打字仍然是一个挑战,本文将详细介绍如何在手机端轻松操控VPS并进行打字。1. 使……

    2024-03-25
    0148

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入