V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kevin1852
V2EX  ›  Linux

请问 shell 下如何模拟按键?

  •  
  •   kevin1852 · 2015-07-22 23:18:45 +08:00 · 8546 次点击
    这是一个创建于 3412 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求场景是这样的,我有个命令行界面的管理工具,想要系统启动的时候启动这个管理工具自动选择里面的检测项,然后输出结果到文件,脚本如下:
    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

    谢谢众神
    14 条回复    2015-07-23 11:34:00 +08:00
    ansemz
        1
    ansemz  
       2015-07-22 23:57:20 +08:00
    看看expect
    poke707
        2
    poke707  
       2015-07-23 01:08:23 +08:00 via Android
    xdotool可满足用代码来按键盘
    ryd994
        3
    ryd994  
       2015-07-23 01:09:00 +08:00 via Android
    xdotool,前提是用的终端模拟器
    kevin1852
        4
    kevin1852  
    OP
       2015-07-23 09:23:37 +08:00
    @poke707 没有x11也能用吗?
    kevin1852
        5
    kevin1852  
    OP
       2015-07-23 09:23:56 +08:00
    @ryd994 没有x11也能用吗?
    kevin1852
        6
    kevin1852  
    OP
       2015-07-23 09:29:00 +08:00
    没有x11好像不行啊
    freeznet
        7
    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
        8
    kevin1852  
    OP
       2015-07-23 10:00:23 +08:00
    @freeznet 不光要选9。。。先选3-->2(管理员登录),然后输入管理员的密码,然后回车,然后按R-->R-9
    freeznet
        9
    freeznet  
       2015-07-23 10:02:25 +08:00
    @blackshow 你可以试试修改echo到你需要的顺序, 比如echo "3\n2\n管理员密码\nR\nR\n9\n"
    foxni
        10
    foxni  
       2015-07-23 10:04:31 +08:00
    感觉你这就是个交互过程,建议用expect。
    fuge
        11
    fuge  
       2015-07-23 10:09:24 +08:00
    expect 你会爱上她
    zhjits
        12
    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
        13
    fising  
       2015-07-23 10:32:13 +08:00
    除了expect , awk 也可以
    kevin1852
        14
    kevin1852  
    OP
       2015-07-23 11:34:00 +08:00
    @fuge
    @foxni
    谢谢,我已经完全沉醉于expect了,谢谢大家
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.