while read循环中调用ssh 远程执行代码的大坑是怎样的

本篇文章给大家分享的是有关while read循环中调用ssh 远程执行代码的大坑是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

然后开始调查为什么切的这么慢. 

然后开始balabala 代码日志,  发现 如果检测正常,或者没有达到lvs 切换标准的时候, 整个代码流程是能够完整跑完的. 

对照日志, 开始balabala  代码.  然后突然发现了这个 while read   循环调用ssh 到远端的执行的 代码结构. 

这里问题就是如果while read 里读到 各个节点  然后去检测这个节点对应健康状态. 

如果这个节点需要lvs 切换了. 那么就调用ssh 到某台远端节点  执行某个操作命令. 

执行这个ssh 的时候,因为ssh 要把stdin  作为输入. 所以把while read 的stdin buffer 全部读完了. 

导致这个节点处理完后,  while 循环, 再从头开始的时候,read 已经到达EOF 了. 然后循环退出了. 

如果这个节点不够 切换标准, ok , 不会调用ssh . 那么后面的节点还在while read 的stdin buffer 里, 

read 可以读到. 然后整个循环会跑完. 

我们接手后, 就很方便追查问题来源了.  当然了.问题也就此解决了. 

以上就是while read循环中调用ssh 远程执行代码的大坑是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。