async def run_client(host, command):
async with asyncssh.connect(host) as conn:
return await conn.run(command)
async def run_multiple_clients():
# Put your lists of hosts here
hosts = ['localhost', '1.1.1.1', 'localhost', '1.1.1.1']
tasks = (asyncio.wait_for(run_client(host, 'ls abc'), timeout=3)
for host in hosts)
results = await asyncio.gather(*tasks, return_exceptions=True)
for i, result in enumerate(results, 1):
if isinstance(result, asyncio.TimeoutError):
print('Task %d timed out.' % i)
elif isinstance(result, Exception):
print('Task %d failed: %s' % (i, str(result)))
elif result.exit_status != 0:
print('Task %d exited with status %s:' % (i, result.exit_status))
print(result.stderr, end='')
else:
print('Task %d succeeded:' % i)
print(result.stdout, end='')
print(75*'-')