step 1.安装Cygwin,安装上Tcl和Expect两个工具。
百度搜索:cygwin,在搜索结果中点击:Cygwin Installation此刻,进入cygwin软件官网,根据自己操作系统,选择32位或64的setup
双击打开下载完成的cygwin,进入安装程序首页,下一步
扩展包的安装方式选择,默认即可(从网上下载并安装),下一步
选择软件的安装目录和允许使用的用户,默认即可,下一步
选择从网上下载的软件包的存储路径,(默认或者)手动指定一个合适路径,下一步,如果手动指定的路径不存在,则会询问是否创建目录,选择:是
选择网络连接方式,默认即可(直接连接,不使用代理),下一步
选择下载点,在User URL处填图示的网址,点击Add
选择,刚刚填入的163镜像站点,下一步
开始从镜像站点下载并安装软件
开始安装一些默认的软件包,如果特殊需求,默认即可,下一步
剩下的步骤一直点下一步,最后完成安装
step 2.
1.安装Cygwin,安装上Tcl和Expect两个工具。
可以使用apt-cyg命令安装,也可以在安装Cygwin的时候选中这两个包。
命令安装的话使用下面的两个命令:
apt-cyg install tcl
apt-cyg install expect
安装后验证是否安装成功
Tcl:win+r 输入cmd,打开cmd
which tclsh
输入如上代码如果出现Tcl的安装路径说明安装成功
Expect:同样的操作
2.写一个Expect脚本:
#!/usr/bin/expect
spawn ssh Administrator@192.168.16.1
expect "*password:"
send "123456\r"
expect "*#"
interact
该脚本是远程登陆ssh服务器,我的服务器是Win XP系统上安装的OpenSSH,注意在服务器端的配置文件允许账号密码登陆。
cd到脚本所在的目录,执行如下命令,即可自动登陆。
expect ssh.tcl
上图出现 C:\OpenSSH\home\Administrator>目录后即可说明已经远程联机上服务器。
执行远程服务器的脚本,并能够打印信息,然后打印完自己退出。
step 3.expect 执行远程脚本接收打印信息然后退出,exp 执行完后退出
1 、 首先来个shell 名称:start.sh
#!/bin/bash #声明bash解释器
result=`./upload.exp $path [/bash]` #执行expect脚本,然后接受返回的参数
echo "${result}" #打印upload.exp执行后返回结果
if [[ ${result} =~ "ERROR" ]];then #如果报错,异常退出
echo "[ERROR] Upload failed TestFight failed, please check"
exit 1
fi
2 、 在写个upload.exp 脚本
#!/usr/bin/expect -f #声明是expect 解释器
spawn ssh root@192.168.19.52 #远程连接的服务器name 和 ip
expect {
"yes/no" {send "yes\r";exp_continue} #返回结果如果包含yes/no 自动填写yes
"Password:" {send "123456\r"} # 自动填写密码
}
expect "#" #返回任意字符
send "sh ~/yuneecapp-ios/upload.sh\r" #执行远程脚本
expect "#" #接受任意字符
send "exit\r" #发送退出,他自己回执行完毕后退出
interact #声明为交互模式
最终结果是: 登陆远程服务器后执行脚本,打印脚本信息,打印完毕后,自动退出远程服务器。然后把打印结果传入start.sh脚本中的result 变量。
引文:
https://jingyan.baidu.com/article/922554467166cf851648f4cc.html
https://www.cnblogs.com/feipeng8848/p/8559773.html
https://blog.csdn.net/qq_34354426/article/details/79908519
作者:miffy888