【发布时间】:2019-12-11 23:29:21
【问题描述】:
我有一个笨蛋。我有一些我可以访问的服务器,这些服务器在服务器上具有 BMC(基板管理控制器),但只有当您已经通过接口(通过数据路径)通过 SSH 连接到服务器时才能访问它。这个 BMC 有一个迷你操作系统,但是这个操作系统上的日期是完全关闭的,通常是一个月或更长时间,并且无法访问外部网络资源(除非你 scp 覆盖)它需要尽可能手动设置告诉。我正在尝试编写一个bash脚本以SSH到服务器并获取当前日期(这是正确的),然后使用expect使用已知密码SSH到BMC并根据服务器设置的日期设置日期,但是它只是运行脚本并退出而不更改它。更困难的部分是有时有 2 个期望提示(一个用于您是否真的要连接(是/否),另一个用于密码)。我四处寻找,他们不是我为这个复杂的问题找到的答案。另外我有点新期待,在 bash 脚本中运行它很困难。请问我能得到一些帮助吗?
我尝试在 bash 脚本中使用 EOD 来调用期望运行的一部分,但没有骰子。我也尝试使用我当前的代码: 期望 -c "spawn ssh root@address "date -s $DATE" 预计 { “(是/否)”} 发送——“是\r” } “My_known_PW” } 但结果相同
#!/bin/bash
ssh root@$1 -oConnectTimeout=2 << "EOF"
PW="Known_PW"
DATE=$(date +"%y%m%d%H%M")
expect -c "
spawn ssh root@fe80::ff:feff:1%usb0 "date -s $DATE"
expect {
"(yes/no)" {
send -- "yes\r"
}
"$PW"
}
EOF
预期结果:SSH 到输入的服务器,获取 YYMMDDHHMM 格式的当前日期(即 1908031250)并设置为变量 DATE。然后 SSH 到 BMC 并从 $DATE 设置日期并退出。它所做的只是退出
【问题讨论】: