前言
在日常测试和运维工作中,我们经常需要远程登录多台 Linux 服务器执行相同的命令,比如:批量部署环境、同步日志、重启服务等。
如果一台台手动输入命令,既浪费时间,也容易出错。
幸运的是,Xshell 提供了强大的脚本功能,可以帮助我们实现自动化。
本文将从零开始,教大家如何使用 Xshell 自动化脚本,实现批量远程登录和执行命令,提升效率。
一、准备工作
1. 安装 Xshell
-
前往 Xshell 官网 下载并安装。
-
建议安装 Xshell + Xftp 套装,方便后续文件传输。
2. 了解 Xshell 脚本语言
Xshell 内置的脚本语言类似 VBScript,支持:
-
登录远程主机
-
执行命令
-
循环控制
-
读取外部文件
二、Xshell 脚本语法入门
一个典型的 Xshell 自动化脚本结构如下:
Sub Main
' 连接远程主机
session = "192.168.1.100"
user = "root"
password = "123456"
crt.Screen.Synchronous = True
crt.Session.Connect("/SSH2 /L " & user & " /PASSWORD " & password & " " & session)
' 执行命令
crt.Screen.Send "echo 'Hello from Xshell!'" & vbCr
crt.Screen.WaitForString "#"
' 退出会话
crt.Screen.Send "exit" & vbCr
End Sub
📌 关键点:
-
crt.Session.Connect
→ 用于建立 SSH 连接。 -
crt.Screen.Send
→ 发送命令。 -
crt.Screen.WaitForString
→ 等待命令执行完成。
三、批量执行脚本
很多时候,我们需要批量管理多台服务器,可以用 循环读取主机列表 的方式来实现。
1. 创建主机列表文件
在 servers.txt
中写入服务器信息:
192.168.1.101 root 123456
192.168.1.102 root 123456
192.168.1.103 root 123456
2. Xshell 批量登录脚本
Sub Main
Dim fso, file, line
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\\servers.txt", 1)
Do Until file.AtEndOfStream
line = file.ReadLine
arr = Split(line, " ")
session = arr(0)
user = arr(1)
password = arr(2)
' 连接主机
crt.Session.Connect("/SSH2 /L " & user & " /PASSWORD " & password & " " & session)
' 执行命令
crt.Screen.Send "hostname" & vbCr
crt.Screen.WaitForString "#"
crt.Screen.Send "uptime" & vbCr
crt.Screen.WaitForString "#"
' 退出
crt.Screen.Send "exit" & vbCr
crt.Screen.WaitForString "closed"
Loop
file.Close
End Sub
📌 功能说明:
-
循环读取
servers.txt
文件中的 IP、用户名和密码。 -
自动登录每台服务器并执行
hostname
和uptime
命令。 -
命令执行完毕后自动退出。
四、常见应用场景
-
批量检查服务器状态(CPU、内存、磁盘使用率)
-
批量部署应用(执行安装或更新命令)
-
日志收集(统一打包拉取到本地)
-
批量重启服务(如 Nginx、Tomcat、MySQL 等)
五、最佳实践
-
安全性:建议使用密钥认证代替明文密码。
-
可维护性:将服务器信息抽离到配置文件中,方便扩展。
-
日志记录:脚本执行时记录日志,方便排查问题。
-
分组执行:不同环境(测试/预发/生产)的服务器分组管理。
六、总结
通过 Xshell 自动化脚本,我们可以轻松实现 批量登录、多机执行命令,大幅度提高测试和运维效率。
作为初级测试工程师或运维人员,掌握这一技能不仅能减少重复性劳动,还能避免人为失误,让工作更加高效和专业。
🚀 建议大家在日常工作中逐步将常用命令封装为 Xshell 脚本,让自动化成为习惯!