Fabric是一个很强大的工具,可以将自动化部署或者多机操作的命令固化到一个脚本里,和某些运维工具很像,用它主要是因为,python…
简单好用易上手,当然,shell各种命令组合起来也可以,上古神器和现代兵器的区别。
初次使用fabric,在验证登录以及写日志等遇到了一些问题,有些问题网上也找不到合适的答案,只能自己解决了,记录下来分享一下。
问题一: ssh可登录,但是fabric却登录不上而且没任何提示
测试代码:
使用fabric执行却没有任何提示。。。
ssh可以登录,但只能执行部分命令.说明机器出问题了。
解决方案:
使用fabric底层使用的ssh库paramiko,可以正确捕获到登录异常。代码如下:
问题二: 命令执行异常时,捕获不到异常和输出
代码如下:
执行命令后,却捕获不到异常:
解决方案:
(1)定义自己的异常类,覆盖env.abort_exception,修改后如下:
可以看到,可以输出异常信息了:
(2) 上面解决方案只能输出异常信息,并没有输出out部分内容,为了捕获异常时命令输出,这里利用StringIO,修改代码如下:
执行命令,可以看出异常和命令输出都可以捕获到:
问题三:多进程日志乱序
fabric开启并发后,由于是多进程,写日志会随机的出现错乱。
解决方案:
在执行命令前对每个host创建一个日志文件,这样在执行命令时进程只会忘对应host的日志写,在整个命令执行完毕后将所有host对应的日志合并。
如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669