请问 shell 下如何模拟按键?

2015-07-22 23:18:45 +08:00
 kevin1852
需求场景是这样的,我有个命令行界面的管理工具,想要系统启动的时候启动这个管理工具自动选择里面的检测项,然后输出结果到文件,脚本如下:
sh /home/xa_linux/start.sh
sleep 10
script -a /home/xa_linux/system.log
/home/swcard/management/swcsmmgmt_v3.6_x64
#启动完这个管理程序以后,想要选择“9”,也就是想模拟键盘按下9,如何实现呢?
exit

谢谢众神
8461 次点击
所在节点    Linux
14 条回复
ansemz
2015-07-22 23:57:20 +08:00
看看expect
poke707
2015-07-23 01:08:23 +08:00
xdotool可满足用代码来按键盘
ryd994
2015-07-23 01:09:00 +08:00
xdotool,前提是用的终端模拟器
kevin1852
2015-07-23 09:23:37 +08:00
@poke707 没有x11也能用吗?
kevin1852
2015-07-23 09:23:56 +08:00
@ryd994 没有x11也能用吗?
kevin1852
2015-07-23 09:29:00 +08:00
没有x11好像不行啊
freeznet
2015-07-23 09:31:45 +08:00
```
echo "9\n" | /home/swcard/management/swcsmmgmt_v3.6_x64
```

应该就可以了吧= =或者用yes也可以
```
yes 9 | /home/swcard/management/swcsmmgmt_v3.6_x64
```
kevin1852
2015-07-23 10:00:23 +08:00
@freeznet 不光要选9。。。先选3-->2(管理员登录),然后输入管理员的密码,然后回车,然后按R-->R-9
freeznet
2015-07-23 10:02:25 +08:00
@blackshow 你可以试试修改echo到你需要的顺序, 比如echo "3\n2\n管理员密码\nR\nR\n9\n"
foxni
2015-07-23 10:04:31 +08:00
感觉你这就是个交互过程,建议用expect。
fuge
2015-07-23 10:09:24 +08:00
expect 你会爱上她
zhjits
2015-07-23 10:20:33 +08:00
参考以下写法:

fdisk /dev/mmcblk0 <<EOF
p
d
2
n
p
2
$PART_START
p
w
EOF
fising
2015-07-23 10:32:13 +08:00
除了expect , awk 也可以
kevin1852
2015-07-23 11:34:00 +08:00
@fuge
@foxni
谢谢,我已经完全沉醉于expect了,谢谢大家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX