执行脚本简化用xshell命令输入查看日志

1.Expect脚本

#!/usr/bin/expect
# 参数解析
set service [lindex $argv 0]  # 获取第一个参数:服务名
set environment [lindex $argv 1]  # 获取第二个参数:子类型
set keyword [lindex $argv 2]  # 获取第三个参数:关键词

# SSH连接到远程服务器
spawn ssh user@t-3-3  # 启动ssh连接到远程服务器
expect "password:"  # 等待密码提示
send "123456\r"  # 发送密码
expect "$ "  # 等待出现命令提示符

# 进入日志路径并查看日志
if {$keyword eq ""} {  # 如果关键词为空
    send "tail -500f /mnt/logs/oryx-$service-*-$environment.log\r"  # 显示最近500行日志,并实时更新
} else {  # 如果有关键词
    send "cat /mnt/logs/oryx-$service-*-$environment.log | grep -20a $keyword\r"  # 查找日志中包含关键词的行,并显示上下20行
}
expect "$ "  # 等待出现命令提示符

# 退出SSH连接
#send "exit\r"  # 发送退出命令
expect eof  # 等待会话结束

执行命令:

expect test.sh object-engine test2 fe28c2fb8646ded2

expect test.sh object-engine test2

2.Expect
Expect是一个用于自动化交互任务的工具,主要用于自动化执行需要交互的命令行程序。它可以自动输入命令和响应提示符,从而在无需人工干预的情况下完成任务。Expect脚本常用于测试、远程登录和自动化安装等场景。
1)命令解释
spawn用于启动一个新的进程。通常用于启动一个命令行程序或脚本,例如ssh连接。

spawn ssh user@host

expect用于等待指定的输出出现。当检测到输出时,可以执行后续命令。

expect "password:"

send用于向进程发送输入。例如,发送密码或命令。

send "mypassword\r"

2.1参数解析
在Expect脚本中,参数可以通过argv变量来访问,这是一个列表,包含了传递给脚本的所有参数。
1)argv变量:
argv是一个列表,包含了传递给Expect脚本的所有命令行参数。例如,如果你运行脚本时输入:

expect check_logs.sh myservice myenvironment mykeyword

那么argv列表将包含[“myservice”, "myenvironment ", “mykeyword”]。

2)lindex命令:
lindex用于从列表中获取元素。语法为lindex list index,其中list是列表,index是索引(从0开始)。

设置参数:

set service [lindex $argv 0]:从argv列表中获取第一个元素,并将其赋值给service变量。这个参数表示服务名。
set environment [lindex $argv 1]:从argv列表中获取第二个元素,并将其赋值给environment 变量。这个参数表示环境。
set keyword [lindex $argv 2]:从argv列表中获取第三个元素,并将其赋值给keyword变量。这个参数表示关键词。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值