我正在尝试创建一个使用Expectk和rmt命令的tcl脚本。我可以生成一个rmt进程并获取正确的进程ID,但是没有使用的send命令。我在手册页中注意到,为了不同的目的定义了普通的send命令,所以我应该使用exp_send。
这是脚本。我想要做的就是获取磁带机的状态:
#!/bin/sh
# Restarts using wish in the command search path
exec expectk "$0" -- "$@"
set stored_id [spawn "rmt"]
exp_send -i $stored_id "O/dev/nst0\r"
exp_send -i $stored_id "S\r"
编辑:这是通常从命令行使用命令的方法:
$ rmt
O/dev/nst0
S
A0
^C
“A0”是命令的响应,^ C是我按Ctrl-C退出rmt命令。
答案 0 :(得分:0)
尝试在每个命令的末尾发送\n\r
。以下类型的工作对我来说(注意,使用原始expect
):
spawn "rmt"
send "O/goo/bar\n\r"
expect "E22" {
puts "Error!!!"
}
答案 1 :(得分:0)
我一开始并不完全理解这个命令的手册页。以下似乎可以打开设备进行读写,并获得设备的状态。状态将自动显示在屏幕上,但“获得状态”部分仅表示命令已成功执行。
#!/bin/sh
# Restarts using wish in the command search path
exec expectk "$0" -- "$@"
spawn "rmt"
exp_send "O/dev/nst0\r"
exp_send "O_RDRW\r"
expect "A0" {
puts "Success!"
}
exp_send "S\r"
expect "A" {
puts "Got the status"
}