什么是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。要批量远程执行脚本和命令,需要编写一个包含命令的脚本文件,一个包含要运行脚本的所有远程主机的主机文件以及一个循环脚本,该脚本将运行在远程主机上的目标脚本。