CentOS xhsell expect批量远程执行脚本和命令

什么是xhsell expect?

xhsell expect是一种自动交互工具,它可以在Linux或Unix服务器上远程执行命令并自动响应提示信息。与ssh不同的是,它通过模拟用户的输入来操作终端,从而实现了自动交互。这使得xhsell expect在批量操作或自动化脚本方面非常有用。

在CentOS中安装xhsell expect

在CentOS中,要安装xhsell expect,需要执行以下命令:

sudo yum install -y expect

这个命令将自动安装xhsell expect和所有依赖项。

使用xhsell expect批量远程执行脚本和命令

步骤1:创建一个包含命令的脚本文件

首先,需要创建一个脚本文件,其中包含要在远程服务器上运行的命令。例如,以下是一个示例脚本文件,可以在远程服务器上打印当前时间戳:

#!/usr/bin/expect

set command "date +%s"

set timeout -1

spawn ssh user@remote.server

expect {

"password:" {

send "password\r"

expect {

"user@remote.server" {

send "$command\r"

expect {

"}" {

send "exit\r"

}

}

}

}

}

}

在此脚本中,使用spawn命令生成ssh会话,并在expect块中处理所有可能的提示和响应。在这种情况下,它首先输入密码,然后在提示符下运行date命令,最后退出SSH会话。

步骤2:编写一个包含服务器列表的主机文件

其次,需要编写一个包含要运行脚本的所有远程主机的主机文件(一行一个)。以下是样式的示例文件:

remote.server1

remote.server2

remote.server3

请确保在文件的结尾添加一个空行(如果没有最后一行空行,xhsell expect可能会忽略最后一个主机)。

步骤3:运行脚本

最后,使用以下命令来执行脚本:

#!/bin/bash

for host in `cat hosts.txt`; do

echo -e "\033[1mRunning script on $host...\033[0m"

ssh-copy-id $host >/dev/null 2>&1

expect script.sh $host > /dev/null 2>&1

done

在此脚本中,使用for循环运行远程主机列表,并在远程主机上连续运行目标脚本(以expect作为前缀)。此外,使用ssh-copy-id命令将您的公共密钥复制到远程服务器上,以避免在登录时输入密码。

总结

xhsell expect是一种自动化交互工具,它可以在Linux或Unix服务器上远程执行命令并自动响应提示信息。在CentOS中,可以使用yum安装xhsell expect。要批量远程执行脚本和命令,需要编写一个包含命令的脚本文件,一个包含要运行脚本的所有远程主机的主机文件以及一个循环脚本,该脚本将运行在远程主机上的目标脚本。

操作系统标签