本文共 3008 字,大约阅读时间需要 10 分钟。
名字
pssh-并行ssh程序 概要 pssh [-vAiIP] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] command …pssh -I [-vAiIP] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [command …]
描述
psshpssh是一个在多个主机上并行执行ssh的程序。 它提供了诸如向所有进程发送输入,将密码传递给ssh,将输出保存到文件和超时的功能。 PSSH_NODENUM和PSSH_HOST环境变量被发送到远程主机。 PSSH_NODENUM变量为每个ssh连接分配一个唯一的编号,从0开始计数。 PSSH_HOST变量被分配在主机列表中指定的主机名称。 请注意,sshd默认删除环境变量,因此远程主机上的sshd_config必须包含以下行:AcceptEnv PSSH_NODENUM PSSH_HOST
选项
-h host_file执行命令的远程主机列表 –hosts host_file 从给定的host_file读取主机。 主机文件中的行格式为[user @] host [:port],可以包含空行和注释(以“#”开头的行)。 如果给出多个主机文件(-h选项被多次使用),则pssh的行为就像这些文件连接在一起。 如果主机被指定多次,那么pssh将连接给定的次数。 -H [user@]host[:port]–host
[user@]host[:port]
-H
“[user@]host[:port] [ [user@]host[:port ] … ]”
–host
“[user@]host[:port] [ [user@]host[:port ] … ]”
将给定的主机字符串添加到主机列表。 此选项可以多次给出,可以与-h选项一起使用。 -l user –user user 使用给定的用户名作为未特别指定用户的任何主机条目的默认值。 -p parallelism –par parallelism 使用给定的数字作为并发连接的最大数量。 -t timeout –timeout timeout 在给定的秒数之后连接超时。 值为0,pssh不会超时任何连接。 -o outdir –outdir outdir 将标准输出保存到给定目录中的文件。 文件名的格式为[user @] host [:port] [.num],其中用户和端口仅包含在明确指定它们的主机中。 该号码是每次为不止一次指定的主机增加的计数器。 -e errdir –errdir errdir 将标准错误保存到给定目录中的文件。 文件名与-o选项的格式相同。 -x args –extra-args args 传递额外的SSH命令行参数(有关SSH参数的更多信息,请参阅ssh(1)手册页)。 此选项可以多次指定。 参数被处理为在空格上分割,保护引号内的文本,并使用反斜杠进行转义。 要传递参数而不进行此类处理,请改用-X选项。 -X arg –extra-arg arg 通过单个SSH命令行参数(有关SSH参数的更多信息,请参阅ssh(1)手册页)。 与-x选项不同,对参数不进行处理,包括分词。 要传递多个命令行参数,请为每个参数使用一次选项。 -O options –options options SSH配置文件中使用的格式的SSH选项(有关详细信息,请参阅ssh_config(5)手册页)。 此选项可以多次指定。 -A –askpass 提示输入密码并将其传递给ssh。 密码可用于解锁密钥或进行密码认证。 密码以相当安全的方式传输(例如,它不会显示在参数列表中)。 但是,请注意,系统上的root用户可能会窃取密码。 -i –inline 每个主机完成时显示标准输出和标准错误。 –inline-stdout 每个主机完成时显示标准输出(但不是标准错误)。 -v –verbose 使用-i和\ options包含来自ssh的错误消息。 -I –send-input 读取输入并发送到每个ssh进程。 由于ssh允许在标准输入上发送命令脚本,所以可以使用-I选项来代替命令参数。 -P –print 显示输出到达。 此选项的有用性有限,因为来自不同主机的输出是交错的。 例子连接到host1和host2,并从每个打印“hello,world”:
pssh -i -H“host1 host2”echo“hello,world”从文件hosts.txt中指定的每个主机打印“hello,world”
pssh -i -h hosts.txt echo“hello,world”以root身份运行命令,并提示输入root密码:
pssh -i -h hosts.txt -A -l root echo hi运行一个长命令没有超时:
pssh -i -h hosts.txt -t 0 sleep 10000如果文件hosts.txt有大量条目,例如100,那么并行选项也可以设置为100,以确保命令同时运行:
pssh -i -h hosts.txt -p 100 -t 0 sleep 10000运行命令而不检查或保存主机密钥:
pssh -i -H host1 -H host2 -x“-O StrictHostKeyChecking = no -O UserKnownHostsFile = / dev / null -O GlobalKnownHostsFile = / dev / null”echo hi打印每个连接的节点编号(将打印0,1和2):
pssh -i -H host0 -H host1 -H host2 echo $ PSSH_NODENUM’ 提示如果您有一组主机经常与特定选项连接,则创建别名可能会有所帮助,例如:
别名pssh_servers =“pssh -h /path/to/server_list.txt -l root -A”
ssh_config文件可以包含任意数量的主机部分。 每个主机条目指定仅适用于给定主机的ssh选项。 如果包含HostName选项,主机定义甚至可以像别名一样行为。 这个ssh功能与pssh主机文件相结合,提供了极大的灵活性。退出状态
pssh的退出状态代码如下:0成功
1杂项错误
2语法或使用错误
3至少有一个进程被信号杀死或超时。
4所有进程已完成,但至少有一个ssh进程报告错误(退出状态255)。
5没有ssh错误,但至少有一个远程命令具有非零退出状态。
作者:Brent N. Chun 和Andrew McNabb 。
也可以看看
ssh(1),ssh_config(5),pscp(1),prsync(1),pslurp(1),pnuke(1)转载地址:http://lkbdi.baihongyu.com/