预期脚本 - 输入密码然后运行bash脚本

时间:2018-01-25 19:22:52

标签: bash shell ssh tcl expect

我有一个bash脚本,它调用一个带有密码的expect脚本来启动ssh进程:

#!/usr/bin/bash
/usr/bin/expect $PWD/sshScript.exp $SSHPASSWORD

expect脚本调用ssh命令,等待提示输入密码并发送密码。

#!/usr/bin/expect
set password [lindex $argv 0];
spawn ssh -o "StrictHostKeyChecking no" username@host
expect "Enter your AD Password:" {
    send "$password\r"
}

我可以让远程服务器正确显示ssh并显示[user@host ~]$但是我想在expect脚本中添加一种自动运行bash脚本的方法,该脚本存储在与其他两个脚本相同的位置。

我试过

a)将文件scp到远程并在服务器中调用它,但我似乎无法期望发送任何文本传递密码

b)执行spawn ssh -o "StrictHostKeyChecking no" username@host < secondscript.sh发送脚本以便运行,但在尝试运行脚本之前不会等待输入密码。

1 个答案:

答案 0 :(得分:0)

您可以将bash和expect脚本组合在一起,并使用它将第3个bash脚本复制到远程服务器,执行它并返回输出。 这是一个简单的非测试示例:

<body>
  <div class="wrapper">
    <div class="header">
      <div class="box">
        intersect
      </div>

      <div class="box">
        rest
      </div>
    </div>

    <div class="wrapper-inner">
      <div class="side">
        navigation
      </div>

      <div class="main">
        main content
      </div>
    </div>

  </div>
</body>