尝试编写一个简单的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
不完全确定问题所在。我在网上查看了一堆示例,看起来我有正确的事情,语法正确。有什么想法吗?
答案 0 :(得分:1)
您似乎缺少使用expect
语法的shell(echo
)语法。 read
和expect_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之前对脚本执行变量替换。