我尝试使用spawn命令连接到远程服务器,执行一些命令/脚本。
这是脚本:
#!/usr/bin/expect
for i in `srvctl status database -d PROD | awk -F " " '{print $(NF)}'`
do
echo "value of i is $i"
spawn ssh "$i"
echo "vijay"
done
这是输出
bash-3.2$ sh a.sh
value of i is prod1
a.sh: line 8: spawn: command not found
vijay
value of i is prod2
a.sh: line 8: spawn: command not found
vijay
我正在使用 RHEL 5.11 。
bash-3.2$ expect -v
expect version 5.43.0
提前致谢。
答案1
当您运行脚本作为 shell 的参数时,就像您正在做的那样:
sh a.sh
shebang 将被忽略,脚本a.sh
将由 解释sh
。由于spawn
您的系统中没有这样的命令(spawn
是expect
特定命令),因此 shell 会抛出给定的错误。
鉴于您的 shebang 是#!/usr/bin/expect
,不清楚您要做什么,因为脚本中有许多(除 之外的spawn
)非特定命令。expect