我正在尝试使用 bash 脚本实现以下目标:
- 尝试 SSH 连接,如果失败,如果 SSH 连接成功则报错
- 一旦确认,执行'top'命令并将结果保存到文件
- 从远程服务器返回 scp 文件
我知道invidiual命令,这将是:1)检查ssh连接:
ssh -q user@ip exit
echo $?
这应该在成功时返回“0”,在错误时返回“255”。
2)执行顶部并保存到文件将是:
top -n 1 -b > /tmp/top.out
3) 来自远程主机的 scp back 文件
expect -c "
set timeout 1
spawn scp user@host:/tmp/top.out root@anotherhost:/.
expect yes/no { send yes\r ; exp_continue }
expect password: { send password\r }
expect 100%
sleep 1
exit
"
现在把这完全是我的问题,更具体地说:
使用 expect 测试 SCP 连接时,我似乎无法获得返回的“0”和“255”值。
- 我似乎无法再次使用 expect 执行 top 命令,即这不起作用:
期望 -c " 设置超时 1 生成 ssh 用户@主机顶部 -n 3 -b > /tmp/top.out 期望密码:{ 发送密码\r } 睡眠 1 退出 "
- 因此第三位也不起作用。
任何帮助表示赞赏。请记住,我的脚本是带有#!/bin/bash声明的 .sh 脚本——由于各种原因,我不能使用#!/usr/bin/expect。