SecureCRT实现脚本执行的方法
SecureCRT作为专业的终端仿真工具,支持通过多种方式实现脚本执行,涵盖从基础录制到高级自动化的场景,以下是具体实现步骤:
SecureCRT.exe /SCRIPT 脚本路径(如SecureCRT.exe /SCRIPT C:\scripts\auto_login.vbs),可快速启动SecureCRT并执行脚本;若需指定会话或参数,可添加/S 会话名(如/S Redhat8)或/Arg 参数值(如/Arg username)。ls -l或display cur),点击「确定」。此后每次连接该会话,SecureCRT将自动执行指定命令。crt.Session.ConnectInTab()命令在脚本中打开多个标签页(如批量连接多台服务器),通过crt.GetTab(标签页索引)获取标签页对象,向不同标签页发送命令(如tab1.Screen.Send("ls -l\r"))。crt.Session.LogFileName = "日志路径"(如log_%Y%m%d_%H%M%S.txt)和crt.Session.Log(True)命令,自动记录会话输出到指定文件,便于后续排查问题。SecureCRT.exe /SCRIPT script.vbs arg1 arg2),在脚本中使用crt.Arguments.Item(0)(获取第一个参数)读取参数值,实现灵活配置(如批量执行不同命令)。On Error Resume Next语句捕获脚本执行中的错误(如连接失败),避免脚本中断;结合If Err.Number <> 0 Then判断错误类型,输出错误信息(如crt.Dialog.MessageBox("连接失败:" & Err.Description))。$language = "VBScript"
$interface = "1.0"
Sub Main
crt.Screen.Synchronous = True
crt.Screen.WaitForString "login:"
crt.Screen.Send "admin" & vbCr
crt.Screen.WaitForString "Password:"
crt.Screen.Send "yourpassword" & vbCr
crt.Screen.WaitForString "#"
crt.Screen.Send "ls -l" & vbCr
End Sub
import SecureCRT
import time
crt = SecureCRT.Session()
crt.Screen.Synchronous = False
hosts = ["192.168.1.1", "192.168.1.2"]
for ip in hosts:
try:
crt.Session.ConnectInTab(f"/SSH2 /L admin /PASSWORD yourpassword {ip}")
time.sleep(1)
crt.Screen.Send("\r\r")
crt.Screen.WaitForString("#")
crt.Screen.Send("df -h\r")
crt.Screen.WaitForString("#")
log_file = f"log_{ip}_{time.strftime('%Y%m%d_%H%M%S')}.txt"
crt.Session.LogFileName = log_file
crt.Session.Log(True)
except Exception as e:
crt.Dialog.MessageBox(f"连接{ip}失败:{str(e)}")
#!/bin/bash
# 上传脚本至服务器
sftp admin@192.168.1.1 <<EOF
put local_script.sh /home/admin/
EOF
# 登录服务器并执行脚本
ssh admin@192.168.1.1 "chmod +x /home/admin/local_script.sh && /home/admin/local_script.sh"
(注:Shell脚本需先在本地编写,通过SecureCRT的SFTP功能上传至服务器,再通过SSH执行)
通过以上方法,可根据需求选择合适的方式实现SecureCRT脚本执行,提升运维效率。