关于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 ...
随机推荐
- PHP判断时关于null,0,true,flase的值
<?php// $wh = 0; //等于整数0,等于字符串'0',等于空字符串,等于空格字符串, 等于空(null),等于字符串('null')// $wh = '0'; //=>等于整 ...
- JZOJ 4421. aplusb
4421. aplusb Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Goto ProblemSet Descr ...
- 开源数据库中间件-MyCat
开源数据库中间件-MyCat产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求.这 ...
- Python文件与异常处理
文件读写 使用python的BIF(build in function)open()进行文件读写操作 # 1.打开文件 data = open(file_name,'w') # 读取模式有很多种,主要 ...
- Python中__str__和__repr__的区别
Python有一个内置的函数叫repr,它能把一个对象用字符串的形式表达出来以便辨认,这就是“字符串表示形式”.repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式.如果没有实现 ...
- [oldboy-django][2深入django]分页功能
1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- C#知识点<3>
1. C# 结构(Struct) 在 C# 中,结构是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构. 结构是用来代表一个记录.假设您想跟踪图书馆中 ...
- LAMP第二部分apache的配置
1. 下载discuz! mkdir /data/wwwcd /data/wwwmv /root/Discuz_X3.2_SC_GBK.zip .wget http://download.comsen ...
- centos7 mariadb mysql max_connections=214 无法修改的问题
centos7 mariadb mysql max_connections=214 无法修改的问题 /etc/my.cnf.d/mariadb-server.cnf [mysqld] max_conn ...
- CSU 1809 Parenthesis(RMQ-ST+思考)
1809: Parenthesis Submit Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n ...