你的位置:

问答吧

-> Shell

-> 问题详情

[问题] bash下如何模拟键盘输入

我想要在bash下模拟键盘输入。

现在有两个实例。

1. 如果我在使用未配置sudo nopasswd的情况下。我用sudo 执行命令然后在标准输出位置,提示我用键盘标准输入密码。我想在不用自己从键盘输入,自动的把密码填入并且确认。

2.如果我在执行某个程序操作后,提示我Y/N,我想自动输入N到标准输入。

请问这样的操作应该怎么实现~?~~?

作者: firefoxmmx

发布时间: 2009-01-23

lz找些expect的资料吧,如果编程功力不错的话c语言也可以实现

作者: dajun

发布时间: 2009-01-23

expect 应该没有问题

作者: bosomfriend

发布时间: 2009-01-23

感谢楼上2位。。我去试试

作者: firefoxmmx

发布时间: 2009-01-24

感谢楼上2位。。我去试试

作者: firefoxmmx

发布时间: 2009-01-24

另外遇到个问题。。

具体实例发出来给大家看看。

代码:

spawn env LANG=en_US sudo apt-get autoremove amsn

expect "*\[Y/n\]\?*"

send "y\n"

exit 0下面是输出结果

代码:

$ expect test1.ex

spawn env LANG=en_US sudo apt-get autoremove amsn

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following packages were automatically installed and are no longer required:

libsnack2 amsn-data tcl8.5 tk8.5 tcl-tls

The following packages will be REMOVED:

amsn amsn-data libsnack2 tcl-tls tcl8.5 tk8.5

0 upgraded, 0 newly installed, 6 to remove and 5 not upgraded.

After this operation, 20.5MB disk space will be freed.

Do you want to continue [Y/n]?他会在这里停止掉。

我觉得是没有正确匹配的原因。(expect "Do you want to continue [Y/n]? " send "y\n" 已经用过了。。还是一样的)

我想可能是回馈信息是一段话的原因吧。一句话的可以匹配比如SUDO。。但是一段话的用正则表达式好像都没有用?~

应该怎么来匹配这个一段话中的[Y/n]呀??

作者: firefoxmmx

发布时间: 2009-01-24

引用:

作者: firefoxmmx

另外遇到个问题。。

具体实例发出来给大家看看。

代码:

spawn env LANG=en_US sudo apt-get autoremove amsn

expect "*\[Y/n\]\?*"

send "y\n"

exit 0下面是输出结果

代码:

$ expect test1.ex

spawn env LANG=en_US sudo apt-get autoremove amsn

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following packages were automatically installed and are no longer required:

libsnack2 amsn-data tcl8.5 tk8.5 tcl-tls

The following packages will be REMOVED:

amsn amsn-data libsnack2 tcl-tls tcl8.5 tk8.5

0 upgraded, 0 newly installed, 6 to remove and 5 not upgraded.

After this operation, 20.5MB disk space will be freed.

Do you want to continue [Y/n]?他会在这里停止掉。

我觉得是没有正确匹配的原因。(expect "Do you want to continue [Y/n]? " send "y\n" 已经用过了。。还是一样的)

我想可能是回馈信息是一段话的原因吧。一句话的可以匹配比如SUDO。。但是一段话的用正则表达式好像都没有用?~

应该怎么来匹配这个一段话中的[Y/n]呀??似乎\r是回车啊。

作者: apzc2529

发布时间: 2009-01-25

\r我也试过。。

无效。

就后面一个y/n弄不掉。。后来我用PYTHON脚本写问题解决了。。(不过,遇到一个问题。就是看不到完整的标准输出信息.看到的是输出的截取)

作者: firefoxmmx

发布时间: 2009-01-28

楼主可以googel “xrgsu expect”,有一个xrgsu的上网脚本可以参考。另外请教楼主的Python实现。

代码:

#! /usr/bin/expect

spawn myxrgsu -a

expect "Please input your user name:"

send "your name\r"

expect "Please input your password:"

send "your password\r"

expect "Use DHCP,1-Use,0-UnUse(Default: 0):"

send "\r"

expect "Use default auth parameter,0-Use 1-UnUse(Default: 0):"

send "\r"

expect "LogOff:"

puts stdout "Authenticate SUCCESSFULLY!"

sleep 360000

#end

作者: apzc2529

发布时间: 2009-01-31

php虚拟键盘输入,[问题] bash下如何模拟键盘输入相关推荐

  1. 模拟linux设备按键工具,linux下如何模拟按键输入和模拟鼠标

    linux下如何模拟按键输入和模拟鼠标 发布时间:2008-08-19 21:11:54来源:红联作者:anopup 查看/dev/input/eventX是什么类型的事件, cat /proc/bu ...

  2. ubuntu下qt模拟键盘按键按下_基于QT的跨平台虚拟键盘设计与实现

    摘  要: 针对QT在Windows.Linux.以及嵌入式Linux-arm等不同平台下没有开源.高效的虚拟键盘(包含中文输入法),以及QT版本升级造成代码不兼容等问题,设计并实现了一个跨平台的虚拟 ...

  3. 天庭云计算机键盘无法输入,Win7系统下无线键盘失灵无法输入的解决方法

    如今市面上无线产品广泛,什么无线鼠标,无线wifi等等,这些无线产品可以给用户们带来更多的方便,比如无线键盘,它通过红外线或无线电波将输入信息传送给特制的接收器,无线键盘的便捷性是有线键盘不可比拟的, ...

  4. linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标

    查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键 ...

  5. linux下如何模拟按键输入和模拟鼠标?

    转贴请注明出处: blog.csdn.net/chenzhixin 查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的 ...

  6. ubuntu下qt模拟键盘按键按下_基于Linux+Qt软键盘设计及其实现.pdf

    计算机与现代化 YUXIANDAIHUA 2011年第12期 JISUANJI 总第196期 文章编号:1006-2475(2011)12-0179-03 基于Linux Qt的软键盘设计与实现 田福 ...

  7. adb 输入回车命令_adb命令模拟按键输入keycode

    例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent 4 //可以解锁屏幕 adb shell input keyevent 82 //在屏幕上做划屏 ...

  8. python如何模拟键盘输入_用python代码模拟键盘输入

    今天在写代码时遇到一种情况,代码只能通过外部操作来判断,这时我就想到用python的代码来模拟一个键盘输入的值. 安装好,就可以直接上代码了:import win32api import win32c ...

  9. vbs脚本在服务器上虚拟按键,怎么用VBS代码实现模拟键盘按键?

    1.基本键:一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母"x",使用"WshShell.SendKeys x"即可.当然,也可直接 ...

最新文章

  1. android edittext限制字节_android EditText输入限制
  2. mysql怎么实现事务序列化_MySQL 架构 - 事务处理
  3. 查看ubuntu linux开放的端口以及控制端口范围
  4. java system.out.read_求教Java高手,关于输入流的read的问题,为什么while循环体里面的两个System.out.println没有打印出来?...
  5. API设计原则 - Qt官网的设计实践总结
  6. 默认参数,命名参数,可变参数
  7. Firefly 3288又一次制作android和lubuntu双系统固件
  8. 外呼机器人起名_电销外呼机器人如此受欢迎,今天终于知道原因了
  9. 呕心沥血博一文--MySQL主从异步复制
  10. vim怎么把一个写的代码文件另存到任意文件夹里?
  11. ARC098E Range Minimum Queries
  12. SlickEdit基本设置
  13. Blender建模汇总
  14. C++之个人银行账户管理程序(二)
  15. CTU CU CB PU TU
  16. 多元统计分析R语言建模| 1 多元数据的数学表达
  17. 【教程】win10 固态硬盘卡机卡死卡顿的真正原因!
  18. 关于深度学习(deep learning)
  19. 测试开发之前端——No8.HTML5中的媒介事件
  20. 产品设计有哪些原则?

热门文章

  1. sql 存储过程 分页
  2. Java ArrayList去重
  3. fedora下重用ssh连接 类似secureCRT的clone session功能
  4. Linux文件系统只读Read-only file system的解决方法
  5. Table表头与数据列对齐问题解决方案
  6. python异常之ModuleNotFoundError: No module named ‘test01inner02‘
  7. vue打包后element-ui部分样式(图标)异常问题
  8. FTP错误 [ftp: connect: No route to host] 解决方法
  9. 如何避免在Excel VBA中使用选择
  10. 在JavaScript中使用“原型”还是“ this”?