pdsh
(Parallel Distributed Shell)是一个用于并行执行命令的工具,可以在多个远程主机上同时运行相同的命令。它对于需要在多台服务器上执行批量操作的系统管理员和开发人员非常有用。
pdsh 介绍
主要特性
- 并行执行:
pdsh
可以在多个主机上并行地执行命令,从而显著减少总执行时间。 - 模块化设计: 支持多种连接方式(如SSH、rsh等),通过不同的模块实现。
- 灵活的主机选择: 支持通过列表、文件或模式选择目标主机。
- 输出标识: 每个主机的输出前都会加上主机名,以便区分来自不同机器的结果。
安装
在大多数Linux发行版中,你可以通过包管理器安装 pdsh
。例如:
# 在基于Debian/Ubuntu的系统上
sudo apt-get install pdsh# 在基于Red Hat/CentOS的系统上
sudo yum install pdsh
基本用法
-
指定主机:
使用
-w
选项指定目标主机列表:pdsh -w host1,host2,host3 uptime
这将在
host1
、host2
和host3
上并行执行uptime
命令。 -
使用主机组文件:
如果你有一个包含主机名的文件(每行一个主机名),可以使用
-R ssh -g <group>
来指定:pdsh -R ssh -g myhosts uptime
-
使用模式匹配:
可以使用模式匹配来简化主机列表,例如:
pdsh -w host[1-10] uptime
这将在
host1
到host10
上执行命令。 -
指定连接方式:
默认情况下,
pdsh
使用rsh协议。如果你想使用SSH,可以指定SSH模块:pdsh -R ssh -w host1,host2,host3 uptime
-
环境变量:
可以设置
PDSH_RCMD_TYPE=ssh
环境变量,以默认使用SSH作为远程连接方法:export PDSH_RCMD_TYPE=ssh pdsh -w host1,host2,host3 uptime
注意事项
-
并发限制: 默认情况下,
pdsh
会尝试与所有目标主机同时建立连接。可以使用-f
选项限制并发连接数:pdsh -f 5 -w host[1-10] uptime
-
安全性: 确保你的SSH公钥已经复制到所有目标机器上以实现免密登录,否则可能需要输入密码。
-
输出格式: 输出可能会混杂在一起,因为命令是并行执行的。可以通过重定向或其他工具进一步处理输出。
通过这些功能,pdsh
提供了一种高效的方法来管理和控制大量服务器,这对于自动化运维和集群管理非常有帮助。
rsh和ssh啥区别?
rsh
(Remote Shell)和 ssh
(Secure Shell)都是用于在网络中远程执行命令的协议和工具,但它们之间有一些关键区别:
安全性
-
rsh:
rsh
是一种较老的协议,缺乏现代安全特性。- 数据传输是明文的,包括用户名和密码,这使得它容易受到窃听攻击。
- 不提供加密或数据完整性校验。
-
ssh:
ssh
提供了强大的加密机制,以确保数据在传输过程中不被窃听或篡改。- 使用公钥/私钥对进行身份验证,支持多种认证方法。
- 提供数据完整性校验和压缩功能。
功能
-
rsh:
- 功能相对简单,仅用于远程命令执行。
- 通常与
rlogin
和rexec
一起使用,形成一套工具。
-
ssh:
- 除了远程命令执行外,还支持安全文件传输(通过
scp
和sftp
)。 - 可以用作隧道来转发端口,支持X11转发等高级功能。
- 支持会话复用,通过一个连接管理多个会话。
- 除了远程命令执行外,还支持安全文件传输(通过
配置和使用
-
rsh:
- 配置简单,但由于安全性问题,通常需要在受信任的网络中使用。
- 使用
.rhosts
文件来配置信任关系,这种方式非常不安全。
-
ssh:
- 配置稍微复杂一些,需要设置SSH服务器和客户端。
- 使用更安全的方式进行身份验证,如基于公钥的认证。
性能
-
rsh:
- 因为没有加密开销,所以在某些情况下可能比SSH稍快,但这通常不是决定因素,因为现代硬件可以高效处理加密任务。
-
ssh:
- 加密和压缩可能会增加CPU负载,但通常可以忽略不计,尤其是在考虑到其带来的安全优势时。
总结
由于安全性方面的显著差异,ssh
已经成为远程登录和命令执行的标准工具,并且在大多数环境中取代了 rsh
。尽管 rsh
在特定受控环境下仍可能被使用,但对于任何需要通过公共网络进行通信的场景,ssh
都是首选。