如何进行多屏批量shell命令发送

2023-04-11 07:24:00 命令 发送 批量
: 如何进行多屏批量shell命令发送 当我们需要在多台服务器上执行相同的命令时,可以使用批量命令发送。批量命令发送允许我们将命令发送到多台服务器,并且在这些服务器上执行相同的命令。 要实现批量命令发送,我们需要使用一个特殊的工具,称为“expect”。Expect是一个开源的自动化工具,可以用于自动执行命令,并处理命令执行过程中出现的任何交互。 下面是一个使用expect实现批量命令发送的简单示例: #!/usr/bin/expect -f set timeout 30 spawn ssh [lindex $argv 0] expect "password:" send "[lindex $argv 1]\r" expect "#" send "uptime\r" expect "#" send "exit\r" 上面的脚本首先使用spawn命令来执行ssh命令,该命令将连接到指定的主机。然后,脚本使用expect命令来等待“password:”字符串的出现。一旦出现该字符串,脚本将使用send命令来发送密码。 接下来,脚本使用expect命令来等待“#”字符的出现,这表示已成功登录到远程主机。然后,脚本使用send命令来发送“uptime”命令,该命令将显示远程主机的当前时间。 最后,脚本使用send命令来发送“exit”命令,该命令将断开与远程主机的连接。 要使用上面的脚本执行批量命令发送,我们需要为每台远程主机创建一个脚本,然后使用一个循环来执行这些脚本。 下面是一个使用循环执行批量命令发送的示例脚本: #!/bin/bash for host in host1 host2 host3 do ./send_command.sh $host password done 上面的脚本首先使用for循环来遍历要执行命令的所有主机。然后,脚本将使用“send_command.sh”脚本来连接到每台主机,并执行命令。 要使用上面的脚本执行批量命令发送,我们需要将脚本放置在一个单独的目录中,然后执行该目录中的脚本。 下面是一个执行批量命令发送的示例目录结构: /batch_command_sender/ host1.sh host2.sh host3.sh run.sh 上面的目录结构包含四个脚本,分别为“host1.sh”,“host2.sh”,“host3.sh”和“run.sh”。 “host1.sh”,“host2.sh”和“host3.sh”脚本包含要发送到每台主机的命令。“run.sh”脚本将执行“host1.sh”,“host2.sh”和“host3.sh”脚本,从而实现批量命令发送。 要使用上面的目录结构执行批量命令发送,我们需要在终端中进入“batch_command_sender”目录,然后执行“run.sh”脚本。 批量命令发送是一个非常有用的工具,可以节省我们在多台服务器上执行相同命令的时间。使用expect工具可以轻松实现批量命令发送,并且可以根据需要自定义脚本的行为。

相关文章