当前位置:  数据库>oracle

如何向shell scripts中的交互过程推送文本信息

    来源: 互联网  发布时间:2017-05-28

    本文导语: 一哥们提了一个问题,觉得比较有意思,小研究了下:这哥们公司的开发部门写了一个jboss的脚本,用于启动jboss程序,需要输入下面类似的命令:./jboss_init.sh start然后会在脚本的提示下输入一个密码确认,然后才能启动。问题...

一哥们提了一个问题,觉得比较有意思,小研究了下:
这哥们公司的开发部门写了一个jboss的脚本,用于启动jboss程序,需要输入下面类似的命令:
./jboss_init.sh start
然后会在脚本的提示下输入一个密码确认,然后才能启动。
问题是这样的,他不想手工输入这个密码,希望程序能够自动完成这个输入过程(因为搞技术的的都是很懒的一批人,懒人成就了技术革新)

为模拟上述的大致环境,我找到了sqlplus程序,sqlplus程序在指定用户名不指定密码的时候,会提示用户输入密码
如下:
[Oracle@rac1 scripts]$ sqlplus mai
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 4 16:50:34 2013
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Enter password:


于是就写出了下面的这个脚本:
[oracle@rac1 scripts]$ more t.sh
#!/usr/bin/expect
set timeout 10
spawn /u02/db_1/bin/sqlplus mai
expect "password:"
send "mair"
interact
注:大部分系统是没有安装expect工具的,需要进行手工安装一下,安装完成之后的程序就是在/usr/bin/expect下
上面的timeout表示一个时间,给出脚本推送文本的时间
spawn的话,就是执行相关的触发命令,这个命令也可以是一个脚本
expect的话,就是查找相应的字段,准备在其后输入参数值
send很明显,就是发送文本,后面的n表示键入一次回车
interact的话,就是使当前脚本恢复交互模式,如果没有这一行的话,那么脚本就会在延时时间到之后自动退出


执行如下:
[oracle@rac1 scripts]$ ./t.sh
spawn /u02/db_1/bin/sqlplus mai
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 4 16:53:05 2013
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Enter password: mai


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options


SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

有上面的结果可见:成功登陆,OK了!

特别注意:
在大部分的脚本程序中,是不允许吧明文密码直接写入脚本中的,这样容易造成密码的泄露。
在此仅仅是使用了sqlplus这个工具模拟了这个过程,显示中的实用性还是有一些的,但是不建议使用。

Linux中shell scripts 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux bash shell命令:grep文本搜索工具简介
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 急问:怎么将一个文本文件平均拆分成10个文本文件?在shell里面怎么实现?谢谢
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • Shell编程:如何在一个文本文件中的第N行插入一行文本?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • shell 编程关于 文本格式转换问题
  • 在LINUX下做文本处理的工作,一般是用SHELL脚本还是动态语言方便?
  • shell中读取一个文本文件将内容按行保存成数组变量
  • 请教shell的问题,关于文本文件的修改和添加
  • 请问在文本终端下,怎么用shell命令使网卡发送数据?
  • 关于shell编程的文本处理
  • 【在线急等求助】UNIX-shell程序,对文本文件进行操作
  • 求一段查询并替换文本字符的shell脚本
  • hp unix: shell 或 AWK 怎样给一行文本记录加上回车换行符呀(rn) ?
  • 如何用shell替换文本中指定的字符串,在线等,急,请各位大侠帮忙!
  • 请问如何用shell脚本将一个文本文件的某几行输入到另一个文件中。
  • 请问如何用shell来读写文本文件呢?
  • shell命令:用sed如何删除一个文本文件的所有行
  • 跪求:shell如何替换文本中匹配的一行
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,