关于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客户端执行
http://www.test.com/test.php"
关于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 ...
随机推荐
- <Docker学习>1. 简介
Q: Dokcer是什么? A: 是一种虚拟化技术.参考https://www.imooc.com/learn/867快速了解Docker. Q: 传统虚拟机技术和Dokcer的区别? A: 传统虚拟 ...
- 虚拟机中配置SQL SERVER2008R2远程访问
VM虚拟机中配置数据库访问 选择虚拟机设置--硬件--网络适配器,选择桥接模式:直接连接物理网络 不可选用主机模式(与主机共享专用网络) 数据库远程配置,转自:http://jingyan.baidu ...
- 字符编码笔记:ASCII、Unicode和UTF-8
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...
- JVM垃圾回收原理
原文地址:http://chenchendefeng.iteye.com/blog/455883 一.相关概念 基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法 ...
- 10,Scrapy简单入门及实例讲解
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
- Maya材质
mental ray--Indirect Lighting(物理学太阳天空) Final Gathering最终聚集 改变质量为production的,FG就是关闭需要重新打开 平行光, ...
- Eclipse主题更换方法
1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮 3.打开Window->Pr ...
- 63、加速android应用(转载)
本文转自 http://www.devtf.cn/?p=1097 原文链接 : Speed up your app原文作者 : UDI COHEN译文出自 : 开发技术前线 www.devtf.cn. ...
- leetcode 【 Insertion Sort List 】 python 实现
题目: Sort a linked list using insertion sort. 代码:oj测试通过 Runtime: 860 ms # Definition for singly-linke ...
- jeakins+maven+jmeter构建性能测试自动化( 在eclipse里运行如果出现没有找到“*.loadtest.xls”,请将此文件名修改为你对应使用的xsl文件名)
背景: 首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自 ...