关于expect脚本输出的问题
写了一个expect脚本 执行ssh命令远程登录 然后telnet另外一台机器
大致如下:
#!/usr/bin/expect -f
set timeout
set port_type [lindex $argv ]
set p1 [lindex $argv ]
set p2 [lindex $argv ]
set p3 [lindex $argv ]
set p4 [lindex $argv ]
set p5 [lindex $argv ] if { $port_type eq "http" } {
#puts "{\"retcode\":\"0\",\"retinfo\":\"in-http\"}"
#puts "port_type=$port_type p1=$p1 p2=$p2 p3=$p3 p4=$p4 p5=$p5 p6=$p6"
spawn ssh $p2@$p1
expect_after eof { exit } expect "yes/no" { send "yes\r" }
expect "*assword:" { send "$p3\r" } #spawn
#expect "Welcome" { send "telnet $p4 $p5\r" }
expect "*#" { send "telnet $p4 $p5\r" }
expect "Connected to" { puts "{\"retcode\":\"0\",\"retinfo\":\"success\"}"
exit
}
puts "{\"retcode\":\"-2\",\"retinfo\":\"fail\"}" } elseif { $port_type eq "mysql" } {
set p6 [lindex $argv ]
set p7 [lindex $argv ]
#puts "{\"retcode\":\"0\",\"retinfo\":\"in-mysql\"}"
#puts "port_type=$port_type p1=$p1 p2=$p2 p3=$p3 p4=$p4 p5=$p5 p6=$p6 p7=$p7"
spawn ssh $p2@$p1
expect_after eof { exit } expect "yes/no" { send "yes\r" }
expect "*assword:" { send "$p3\r" } expect "Welcome" { send "mysql -h $p4 -P $p5 -u $p6 -p $p7\r" }
expect "#" { send "mysql -h $p4 -P $p5 -u $p6 -p $p7\r" }
expect "$" { send "mysql -h $p4 -P $p5 -u $p6 -p $p7\r" } expect "Welcome to the MySQL" {
puts "{\"retcode\":\"0\",\"retinfo\":\"success\"}"
exit
}
puts "{\"retcode\":\"-2\",\"retinfo\":\"fail\"}"
} elseif { $port_type eq "oracle" } {
set p6 [lindex $argv ]
set p7 [lindex $argv ]
set p8 [lindex $argv ]
#puts "{'retcode':0,'retinfo':'into-oracle'}"
#puts "{\"retcode\":\"0\",\"retinfo\":\"in-mysql\"}"
#puts "port_type=$port_type p1=$p1 p2=$p2 p3=$p3 p4=$p4 p5=$p5 p6=$p6 p7=$p7 p8=$p8"
spawn ssh $p2@$p1
expect_after eof { exit } expect "yes/no" { send "yes\r" }
expect "*assword:" { send "$p3\r" } expect "Welcome" { send "sqlplus $p4/$p5@//$p6:$p7/$p8\r" }
expect "#" { send "sqlplus $p4/$p5@//$p6:$p7/$p8\r" }
expect "$" { send "sqlplus $p4/$p5@//$p6:$p7/$p8\r" } expect "SQL*Plus" {
puts "{\"retcode\":\"0\",\"retinfo\":\"success\"}"
exit
}
puts "{\"retcode\":\"-2\",\"retinfo\":\"fail\"}"
}
#interact
然后PHP中 :
$a = system('expect.sh');
然后用xshell客户端执行


关于expect脚本输出的问题的更多相关文章
- Linux 下 expect 脚本语言中交互处理常用命令
Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...
- tck/tl 以及expect脚本
最近有用到,利用expcet脚本自动登录到远程服务器并提权执行脚本. 搜集的知识如下: tcl/tk参考——列表操作lindex expect脚本解释 代码如下 #!/usr/bin/expect - ...
- expect脚本自动获取root权限
Linux脚本中有很多场景是进行远程操作的,例如远程登录ssh.远程复制scp.文件传输sftp等.这些命令中都会涉及到安全密码的输入,正常使用命令时是需要人工手动输入密码并接受安全验证的.为了实现自 ...
- expect脚本远程登录、远程执行命令和脚本传参简单用法
expect介绍: 最近想写一个自动化安装脚本,涉及到远程登录.分发文件包.远程执行命令等,其中少不了来回输入登录密码,交互式输入命令等,这样就大大降低了效率,那么有什么方法能解决呢?不妨试试expe ...
- shell脚本嵌套expect脚本
#!/bin/sh echo "helo" password='xxxx' ###不能在下面的expect脚本段设置成 set password xxxx否则获取不到变量,单独的e ...
- 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)
互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- Mac 让 iTerm2 记住用户名密码 expect 脚本
刚刚用iTerm2的时候,总是要一遍遍的敲用户名.密码. 我在想, 能不能像Windows的软件一样,可以直接让软件记住.然后只要点击一下,就直接ssh到远程服务器上面去了. 之后经过搜索,可以用ex ...
- ZABBIX自定义用户KEY与参数USERPARAMETERS监控脚本输出
zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求.幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据. 定义配置文件 通过yum安装的z ...
随机推荐
- PHP使用CURL_MULTI实现多线程采集
$connomains = array( "http://www.baidu.com/", "http://www.hao123.com/", "ht ...
- day 44 前端HTML
前端HTML HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk ...
- dialog BLE SDK 学习(1)
dialog DA14580 SDK版本:5.0.4. 本文介绍了SDK的运行流程,剖析arch_main.c的工作过程. dialog的BLE协议栈,本来是想学习一下,看看是否能够移植到其他平台上, ...
- hadoop: Shuffle过程详解 (转载)
原文地址:http://langyu.iteye.com/blog/992916 另一篇博文:http://www.cnblogs.com/gwgyk/p/3997849.html Shuffle过程 ...
- 用NPOI完成公司任务(主要就是导入导出操作)
注意要先添加程序集的引用 导出到excel: public override IWorkbook writeExecl(string filePath, DataTable dt) { if (Fil ...
- R语言分析朝阳医院数据
R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...
- pycharm许可证过期
1.选择enter license 2.选择license server 3.输入http://idea.imsxm.com 4.点击ok 好,解决了
- 计算几何-凸包-toleft test
toLeftTest toLeftTest是判断一个点是否在有向直线左侧的算法. 当点s位于向量pq左侧时,toLeftTest返回true.当点s位于向量pq右侧时,toLeftTest返回fals ...
- 查找jar包中.class文件关键字(变量名,字符串)
有时查看日志,常常会发现由框架底层打印的错误日志.要修改这个错误的时候,如果不是对框架特别熟悉,就需要按照可能产生这个错误日志的流程一步一步找,一时半会不一定能找到.比如本人最近对smartfoxse ...
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mongo:mongo-client'.
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ...