BASH 休眠并向程序发送击键
BASH Sleep & Send Keystroke to Program
问题:在终端中启动 Adaptec Utility 并使第二个硬盘驱动器指示灯闪烁。休眠并提交击键以结束闪烁。
> arcconf identify 1 device 0 1
Controllers found: 1
The specified device is blinking.
Press any key to stop the blinking.
命令:arcconf identify 1 device 0 1
以下是我尝试过的一些命令。
1.) echo -ne '\n' | arcconf identify 1 device 0 1
结果:启动程序并立即提交 'enter'。该实用程序在驱动器闪烁之前停止;我不知道如何在这里添加睡眠。
2.) kill -9 8309
结果:终止 arcconf 进程,但是,即使进程终止,驱动器也将永远闪烁。
3.) echo -ne '\n' > /proc/8309/fd/0
结果:向进程发送一个 'enter',但是,这只会将新行打印到终端 运行 arcconf,并且不会实际提交击键。 echo "abcd".
结果相同
如何在 bash 中启动此实用程序、睡眠并发送按键以停止该实用程序?
假设您想休眠 5 秒,请尝试 bash 进程替换
arcconf identify 1 device 0 1 < <(sleep 5; echo)
另一个更精确的选择是使用 expect
expect <<'END'
spawn arcconf identify 1 device 0 1
expect "Press any key to stop the blinking"
send "\r"
expect eof
END
使用shell语句分组:
{ printf '\n'; sleep 5; } | arcconf identify 1 device 0 1
程序标准输入的管道将保持打开状态,直到睡眠结束。
问题:在终端中启动 Adaptec Utility 并使第二个硬盘驱动器指示灯闪烁。休眠并提交击键以结束闪烁。
> arcconf identify 1 device 0 1
Controllers found: 1
The specified device is blinking.
Press any key to stop the blinking.
命令:arcconf identify 1 device 0 1
以下是我尝试过的一些命令。
1.) echo -ne '\n' | arcconf identify 1 device 0 1
结果:启动程序并立即提交 'enter'。该实用程序在驱动器闪烁之前停止;我不知道如何在这里添加睡眠。
2.) kill -9 8309
结果:终止 arcconf 进程,但是,即使进程终止,驱动器也将永远闪烁。
3.) echo -ne '\n' > /proc/8309/fd/0
结果:向进程发送一个 'enter',但是,这只会将新行打印到终端 运行 arcconf,并且不会实际提交击键。 echo "abcd".
结果相同如何在 bash 中启动此实用程序、睡眠并发送按键以停止该实用程序?
假设您想休眠 5 秒,请尝试 bash 进程替换
arcconf identify 1 device 0 1 < <(sleep 5; echo)
另一个更精确的选择是使用 expect
expect <<'END'
spawn arcconf identify 1 device 0 1
expect "Press any key to stop the blinking"
send "\r"
expect eof
END
使用shell语句分组:
{ printf '\n'; sleep 5; } | arcconf identify 1 device 0 1
程序标准输入的管道将保持打开状态,直到睡眠结束。