温馨提示×

Linux expect命令有哪些常见用法

小樊
90
2024-12-01 07:18:05
栏目: 智能运维

expect 是一个用于自动化交互式应用程序的工具,特别适用于需要输入用户名和密码的场合

  1. 基本语法:
expect script

其中,script 是一个包含预期输出的脚本文件。

  1. 等待特定输出: 使用 expect_out(buffer) 变量可以捕获命令的输出。例如,等待 “password:” 提示:
expect "password:"
  1. 发送命令: 使用 send 命令向交互式应用程序发送输入。例如,发送 “my_password”:
send "my_password\r"

\r 是回车符,用于模拟用户按下 Enter 键。

  1. 等待模式: expect 命令支持几种等待模式,如 spawn, expect, send, interact 等。例如,使用 spawn 启动一个新的交互式进程:
spawn ssh user@example.com
  1. 条件判断: 可以使用 if 语句和正则表达式进行条件判断。例如,检查是否收到特定的输出:
if { $expect_out(buffer) =~ "password:" } {
    send "my_password\r"
}
  1. 超时设置: 可以使用 expect_out(timeout) 变量设置超时时间。例如,等待 10 秒:
expect {
    "password:" {
        send "my_password\r"
    }
    timeout {
        puts "Timeout occurred"
        exit 1
    }
}
  1. 循环: 使用 while 循环可以重复执行某个命令。例如,不断发送 “ping” 命令,直到遇到特定的输出:
set count 0
while {$count < 5} {
    expect "password:" {
        send "my_password\r"
        set count [expr $count + 1]
    }
    sleep 1
}
  1. 变量和操作符: expect 支持多种变量和操作符,如字符串比较、正则表达式等。例如,检查输出是否包含 “error”:
if { $expect_out(buffer) contains "error" } {
    puts "Error found"
}

这些是 expect 命令的一些常见用法。expect 的功能非常强大,可以实现许多复杂的自动化任务。

0