以下是使用并行SSH(pssh)带有输出流的代码示例:
import sys
import subprocess
def execute_command(host, command):
ssh_command = f'ssh {host} {command}'
process = subprocess.Popen(ssh_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
return (stdout.decode(), stderr.decode())
def parallel_ssh(hosts, command):
processes = []
for host in hosts:
ssh_command = f'ssh {host} {command}'
process = subprocess.Popen(ssh_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
processes.append(process)
for process in processes:
stdout, stderr = process.communicate()
print(f'Host: {host}')
print(f'STDOUT:\n{stdout.decode()}')
print(f'STDERR:\n{stderr.decode()}')
print('---')
if __name__ == '__main__':
# 单个主机执行命令
host = 'example.com'
command = 'ls -l'
stdout, stderr = execute_command(host, command)
print(f'STDOUT:\n{stdout}')
print(f'STDERR:\n{stderr}')
# 并行SSH多个主机执行命令
hosts = ['example1.com', 'example2.com', 'example3.com']
command = 'ls -l'
parallel_ssh(hosts, command)
在上述示例中,execute_command
函数用于在单个主机上执行命令,并返回stdout和stderr的输出。parallel_ssh
函数用于并行SSH多个主机执行相同的命令,并将每个主机的输出流打印出来。
上一篇:并行数组与结构数组
下一篇:并行std::copy复杂度