Windows上安装配置SSH教程——win10下使用Cygwin+Expect自动登陆ssh

Fern ·
更新时间:2024-11-11
· 657 次阅读

step  1.安装Cygwin,安装上Tcl和Expect两个工具。

百度搜索:cygwin,在搜索结果中点击:Cygwin Installation

如何在windows下安装cygwin

此刻,进入cygwin软件官网,根据自己操作系统,选择32位或64的setup

如何在windows下安装cygwin

双击打开下载完成的cygwin,进入安装程序首页,下一步

如何在windows下安装cygwin

扩展包的安装方式选择,默认即可(从网上下载并安装),下一步

如何在windows下安装cygwin

选择软件的安装目录和允许使用的用户,默认即可,下一步

如何在windows下安装cygwin

选择从网上下载的软件包的存储路径,(默认或者)手动指定一个合适路径,下一步,如果手动指定的路径不存在,则会询问是否创建目录,选择:是

如何在windows下安装cygwin

如何在windows下安装cygwin

选择网络连接方式,默认即可(直接连接,不使用代理),下一步

如何在windows下安装cygwin

选择下载点,在User URL处填图示的网址,点击Add

如何在windows下安装cygwin

选择,刚刚填入的163镜像站点,下一步

如何在windows下安装cygwin

开始从镜像站点下载并安装软件

如何在windows下安装cygwin

开始安装一些默认的软件包,如果特殊需求,默认即可,下一步

如何在windows下安装cygwin

剩下的步骤一直点下一步,最后完成安装

如何在windows下安装cygwin

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



cygwin 安装 expect ssh windows

需要 登录 后方可回复, 如果你还没有账号请 注册新账号