使用哪种脚本语言可以异步 ssh 到设备、运行多个命令、解析输出并保存到计算机上的文件中?

使用哪种脚本语言可以异步 ssh 到设备、运行多个命令、解析输出并保存到计算机上的文件中?

在我的问题中我想强调几点。

我想通过异步 ssh 登录到我们的基础设施设备。这意味着,我不想只连接到一个设备,执行我需要的所有任务,断开连接,然后连接到下一个设备。我想同时连接到多个设备,以使该过程尽可能快。

我所说的设备是指“基础设施设备”和不是服务器。我这样说是因为我无法将文件保存到设备,然后使用 scp 或其他方法将它们传输给我自己。运行的脚本的输出必须直接保存到我的计算机中。

我也无法使用密钥来自动执行登录过程。密码输入需要通过脚本自动完成。

运行的命令的输出需要清理和解析。我还希望将每个设备的输出合并到一个漂亮而整洁的文件中,而不是每个设备都有一个单独的文件。

这一切都将通过 ssh 在 Linux 机器上完成,并进入所有使用 Linux 专有操作系统的设备。

我猜测我的问题的答案要么是 Bash、Perl 或 Python 脚本,但我想问问并听听为什么一种方法比另一种方法更好的理由也无妨。

感谢大家。

额外积分:在您的回答中,请包含有助于创建我以您建议的语言描述的脚本的资源链接。

答案1

并行 SSH(pssh)非常适合这项任务,它在多个主机上并行执行相同的命令。默认情况下,pssh 将使用 32 个并行线程,但如果需要,可以增加此数量。

主机的输出可以记录在运行 pssh 的机器上。记录输出时,pssh 将为每个主机创建一个文本文件,但是您的 bash 脚本可以轻松连接这些文件。

# pwd
/home/fujin

# cat ips.txt
192.168.0.1
192.168.0.2
192.168.0.3

# cat commands.txt
hostname
date
uname -a

# cat script.sh
rm -rf /tmp/pssh-output
mkdir -p /tmp/pssh-output
xargs -I {} pssh -h /home/fujin/ips.txt -o /tmp/pssh-output {} < /home/fujin/commands.txt
cat /tmp/pssh-output/* > /tmp/pssh-output/output.txt

# /bin/sh script.sh
Success on 192.168.0.1
Success on 192.168.0.2
Success on 192.168.0.3

# ls /tmp/pssh-output
192.168.0.1  192.168.0.2  192.168.0.3  output.txt

相关内容