我想使用变量“ a”中的IP SSH。如果一切正常,这很好。 但是,如果我的命令“ commandToGetIP”卡在网络中,或者有任何可能不会返回任何输出,我的脚本将处于挂起状态。 现在,我需要获取的是此命令“ commandToGetIP”应仅等待10秒钟,然后发出一些消息
a = commandToGetIP <DeviceID>
ssh $ a
我想使用变量“ a”中的IP SSH。如果一切正常,这很好。 但是,如果我的命令“ commandToGetIP”卡在网络中,或者有任何可能不会返回任何输出,我的脚本将处于挂起状态。 现在,我需要获取的是此命令“ commandToGetIP”应仅等待10秒钟,然后发出一些消息
答案 0 :(得分:1)
因此,bash有一个内置命令来使另一个命令超时。如果该命令花费的时间太长,超时将用退出代码143杀死它。使用此信息,我在执行ssh命令之前检查退出代码是否为 not 143。否则,当commandToGetIP花费的时间太长时,它将做您想做的任何事情。
timeout 10 commandToGetIP <DeviceID> | read ip
result=$?
if [ "$result" != "143" ]; then
ssh $ip
else
# What we do if it times out
fi