• ubuntu下用expect实现密码自动输入


    每次笔记本一开机启动,总会连用不着且碍事的触摸板也一块启动。便想写个脚本,让电脑启动时关闭触摸板。(当然,我想更好的办法是,修改系统启动时的加载模块,让触摸板不自动加载,但是目前还不知道用这种方法怎么做。) 其实关键的代码就是一句:  
    sudo modprobe -r psmouse 
     这里解释下:modprobe是加载模块的命令,-r的参数则是移除。psmouse是触摸板的模块代名。  
    虽然代码很简单,但是由于涉及到sudo权限,需要输入密码。而写这个脚本的初衷是让其自动执行,不再交互。如果每次还要输入密码,便失去写这个脚本的意义了,还不如每次在终端下执行命令呢。  
    网上有这么写的,但是我用了之后发现不行,论坛上也有很多人说不行,不知道为什么。 
    echo "password" | sudo -S netstat -tlnp  
     也有一个也不行,是这样的: 
    sudo modprobe -r psmouse<<EOF your-password EOF 
    看起来很有道理,不知道为啥也不行。  
    也有人说用expect,由于之前不知道这个东西,便一直没用。现在别的方法都不行了,我便试试这个方法。果然很好使,奉献出来共大家参考。后边有详细的代码解释。 
    自己整理的代码如下: 
    ###############################################
    #!/usr/bin/expect   
    set timeout 30 
    spawn sudo modprobe -r psmouse   
    expect "password for figo:" 
    send "**** "  #这里的“****”就是你的密码   
    interact 
    ##############################################   

    1. [#!/usr/bin/expect] 
      这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。   注意:这一行需要在脚本的第一行。   

    2. [set timeout 30] 
      基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒  

    3. [spawn sudo modprobe -r psmouse] 
      spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。 
      它主要的功能是给sudo modprobe运行进程加个壳,用来传递交互指令。   

    4. [expect "password for figo:"] 
      这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒。注意,这里password for figo:是你正常情况下输入sudo modprobe -r psmouse之后显示的让你输入密码的提示,自己复制下就行了。  

     5. [send "ispass "] 
      这里就是执行交互动作,与手工输入密码的动作等效。 
      温馨提示: 命令字符串结尾别忘记加上“ ”,如果出现异常等待的状态可以核查一下。   6. [interact] 
      执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行 
    #!/usr/bin/expect #注意安装的路径,不确定 whereis expect 一下。UBUNTU12.04好像默认没有安装expect,我们只需要在终端执行以下命令就OK了: sudo apt-get install expect 

  • 相关阅读:
    Codeforces 1316B String Modification
    Codeforces 1305C Kuroni and Impossible Calculation
    Codeforces 1305B Kuroni and Simple Strings
    Codeforces 1321D Navigation System
    Codeforces 1321C Remove Adjacent
    Codeforces 1321B Journey Planning
    Operating systems Chapter 6
    Operating systems Chapter 5
    Abandoned country HDU
    Computer HDU
  • 原文地址:https://www.cnblogs.com/gzxbkk/p/7815616.html
Copyright © 2020-2023  润新知