shell脚本批量主机执行命令(expect)

2024年 5月 30日 56.6k 0

批量在多台主机上执行命令可以使用expect工具来实现。expect是一个用于自动化交互的工具,可以模拟用户的输入和响应。下面是一个简单的Shell脚本示例,演示如何使用expect来批量在多台主机上执行命令:

#!/usr/bin/expectset username "your_username"
set password "your_password"
set command "your_command"
set hosts {
    "host1" "192.168.1.1"
    "host2" "192.168.1.2"
    "host3" "192.168.1.3"
}
foreach {host ip} $hosts {
    spawn ssh $username@$ip
    expect {
        "*password:" {
            send "$password\r"
            expect "*$ "
            send "$command\r"
            expect "*$ "
            send "exit\r"
        }
    }
}

在上面的脚本中,你需要将"your_username"和"your_password"替换为实际的用户名和密码。"your_command"是要在主机上执行的命令。

hosts变量是一个包含主机名和IP地址的列表。你可以根据需要添加或删除主机,或者从其他位置加载主机列表。

脚本中的foreach循环遍历hosts列表,并使用spawn命令在每个主机上启动一个新的ssh会话。expect命令用于匹配不同的交互场景。在遇到"
password:"时,脚本将自动发送密码并等待命令提示符("$ ")出现。然后,脚本发送要执行的命令,并再次等待命令提示符。最后,脚本发送"exit"命令退出ssh会话。

通过适当修改脚本中的变量和命令,你可以批量在多台主机上执行自定义的命令。

需要注意的是,使用expect工具时需要小心处理密码和敏感信息。建议在实际使用时采取安全措施,如使用SSH密钥进行身份验证,以避免密码泄露的风险。

希望以上示例能够帮助你理解如何使用expect工具来批量在多台主机上执行命令。根据实际需求,你可以根据这个示例进行定制和扩展。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论