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

时间: 2024-10-22 09:19:15

ubuntu下用expect实现密码自动输入的相关文章

ubuntu 下安装配置open-iscsi并自动挂载

1.安装open-iscsi apt-get install open-iscsi 2.发现iscsi-target(ISCSI服务器IP:192.168.1.104) iscsiadm -m discovery -t sendtargets -p 192.168.1.104 3.设置开机自动登录到iscsi-target iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.6f5d0fb29fc9 -p 192.168.1.104 –op upd

Ubuntu下MySQL忘记root密码重置

MySQL忘记root密码肿么办?-_-|||   这种情况虽然不是很常见,但是有时长时间没有登录系统,还真会忘记密码.这时候,如果您能以系统管理员权限登陆密码,那还是有救的.放大招,将其重置即可. 1. 修改MySQL的登录设置 vi /etc/mysql/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables :wq 保存设置并退出vi 2. 重新启动mysqld sudo service mysql restart 3. 登录并修改MySQL的root密码  进

Ubuntu下忘记MySQL root密码解决方法

1.忘了mysql密码,从网上找到的解决方案记录在这里. 编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行“skip-grant-tables”. 2.重启服务器:sudo service mysql restart 他会出现这种情况: mysql stop/waiting  mysql start/running, process 18669 3.用空密码进入mysql管理命令行,切换到mysql库.输入:mysql 4.然后输入: mysql> us

Ubuntu下Sublime Text 3解决无法输入中文的方法

环境: Ubuntu14.04 搜狗输入法 for Linux Sublime text 3 提示:编译请在非root下进行 本经验目前在Ubuntu14.04环境下,已有搜狗输入法 for Linux和Sublime Text 3的情况下安装成功. 保存下面的代码到文件sublime_imfix.c(位于~目录) #include <gtk/gtkimcontext.h> void gtk_im_context_set_client_window (GtkIMContext *context

Ubuntu 下重置root用户密码

# [mysqld] section 中加入 "skip-grant-tables" sudo vi /etc/mysql/my.cnf sudo service mysql restart #用空密码进入mysql管理命令行 sudo mysql -u root -p mysql # 重置 root 用户密码 update user set password=PASSWORD("root") where user='root'; # 退出 quit # 将第一步改

ubuntu下MySQL修改root密码的多种方法,phpmyadmin空密码无法登陆的解决方法

phpmyadmin是默认不允许使用空密码的,所以若是在安装时没有设置密码,在登陆phpmyadmin时是个很头疼的问题 方法1是修改phpmyadmin的配置文件,这里不做推荐.. 方法2: phpmyadmin的登陆账户和密码其实就是mysql的账户与密码,那么我们更改mysql的密码即可 打开终端 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass

解决Ubuntu下sublime中不能输入中文的问题

解决Ubuntu下sublime中不能输入中文的问题 Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sublime前自动添加一个动态修正库,解决过程如下: 进入某个目录如-: cd 新建一个C源代码 subl sublime-imfix.c 并粘贴入如下代码: #include <gtk/gtkimcontext.h> void gtk_im_context_set_client_window (Gt

【转】解决Ubuntu下Sublime Text 3无法输入中文

前言 sublime很好用,但是ubuntu下不能输入中文,这是一个很大的问题.不知道为什么开发着一直也不解决,好在还是有高手在,总能找到方法.网上方法很多,但是也很乱,现在我将自己的经验总结一下. 首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sublime Text 中文输入:讲的比较明白,也可用参考. Ubuntu下Sublime Text 3

解决Ubuntu下Sublime Text 3无法输入中文

前言 sublime非常好用,可是ubuntu下不能输入中文,这是一个非常大的问题.不知道为什么开发着一直也不解决,好在还是有高手在.总能找到方法. 网上方法非常多,可是也非常乱,如今我将自己的经验总结一下. 首先,我參考了好几篇文章.都是蛮不错的.先列出来: sublime-text-imfix:首先推荐这种方法.最简单.可是在我的系统上有些问题. 可用这个的强烈推荐用这个 完美解决 Linux 下 Sublime Text 中文输入:讲的比較明确.也可用參考. Ubuntu下Sublime