尝试在Mac脚本

时间:2018-01-22 15:36:43

标签: bash macos

尝试编写一个简单的shell脚本ssh到服务器然后为错误日志运行一个尾部,但是我收到一个错误,说“找不到spawn命令”。我正在使用expect而不是bash,并检查了/ usr / bin,它就在那里。脚本是:

#!/usr/bin/expect -f
echo "starting tail"
echo "password for the box?"
read -s theBoxPassword
spawn ssh root@10.0.0.10
expect "root@10.0.0.10's password: "
send $theBoxPassword\r

不完全确定问题所在。我在网上查看了一堆示例,看起来我有正确的事情,语法正确。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您似乎缺少使用expect语法的shell(echo)语法。 readexpect_user都是shell命令。 Expect使用send_user#!/bin/sh echo "starting tail" echo "password for the box?" read -s theBoxPassword expect <<EOF spawn ssh root@10.0.0.10 expect "root@10.0.0.10's password: " send "$theBoxPassword\r" EOF 等命令执行输入和输出,如this answer中所示。

如果你想混合shell语法和期望,你可以这样做:

{{1}}

这使用shell来生成提示并读取密码,然后将脚本传递给stdin上的expect。 shell将在脚本传递到expect之前对脚本执行变量替换。