我正在编写一些自动化程序,但遇到了一个问题,即主机的密钥已更改并且扳手被投入工作。我想为这个特定条件添加一个飞行前检查,但我似乎无法ssh
返回比它的全部 255 返回代码更多的东西。
例如:
$ ssh -o StrictHostKeyChecking=yes foobar@squiffy-host ls; echo $?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...snip...
255
我怎样才能检测到这一具体案例?
在你的 shell snippit 上构建一点,你可以试试这个:
如果 grep 调用找到错误消息,它应该输出 0,如果没有,它应该输出 1。
在这一点上,我对有一个完美的答案并不十分乐观,所以我接受了你的建议来解析错误文本。
基本上,如果返回码是 255并且所有错误消息都在指定的集合内,那么返回码是 1。
所有其他错误消息/代码返回 2,没有错误返回 0。