Linux下两种实用自动交互方法

这几天一直在忙家庭智能服务器的架设,今天运气好申请到了SSL证书,我用的是Webmin管理面板,启用SSL后发现 每次启动Webmin管理的时候都需要我输入 PEM 密码(Enter PEM pass phrase:),这样就会出现一个问题,开机无法自动启动这个服务了。。

在网上搜索一大堆以后我总结到了2个Linux交互的方法。

第一个方法 – 管道法

这个办法不是所有的地方都有用,但是呢他非常的简单方便,不需要装第三方软件的支持,在一些命令比如passwd上就非常有用了。

代码如下:

 

  1. #!/bin/bash  
  2. (echo "curpassword"  
  3. sleep 1  
  4. echo "newpassword"   
  5. sleep 1  
  6. echo "newpassword")|passwd 

这个是sh脚本,如果想直接在shell里面操作就要这样写

  1. 后执行的命令 | 先执行的命令
  2. 比如:
  3. (echo 123;echo 123) | passwd
  4.  
  5. Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
  6.  
  7. 这个命令就会先执行passwd然后执行前面的 echo 123将向控制台输出123 ,  多个语句必须使用;来分开,另外必须用括号包裹起来。
  8. 这个命令运行以后将会修改当前用户的密码 为123

第二个方法 – 强大的expect

expect是一个非常强大的shell工具,因为expect本来就是为实现自动交互功能而生,但是他也有个缺点,大多数的Linux都没默认安装它,需要自行安装一次。

Ubuntu用户用apt-get install expect 

CentOS用户用yum install expect

来安装这个工具

首先我们要创建一个脚本文件,比如autostart,用vi进行编辑输入下面的代码

 

#!/usr/bin/expect
spawn /etc/webmin/start
expect "Enter PEM pass phrase:"
send "password\n"
expect eof
exit

解释下:

第一行是可以理解成声明,反正这个必须的!
第二行spawn代表运行文件
第三行如果出现了Enter PEM pass phrase:
第四行则输出password和一个回车
第五行expect eof可以理解成是退出判断,这个是必须的,跟编程里面的}一样
最后一个是退出就不解释了。。

expect因为过于强大,所以有点难懂,建议大家多看看其他例子(搜索引擎关键字:expect 例子)和基本用法

发布者

Zmsky

http://xloli.net/?page_id=11

《Linux下两种实用自动交互方法》上有10条评论

发表评论