下面将会讲解Fabric关于颜色输出和上下文管理方面的api讲解。 Fabric核心API: Color output functions 颜色打印: #打印颜色输出,绿色输出 from fabric.colors import green print(green("This text is green!")) #红色和绿色输出 from fabric.colors import red, green print(red("This sentence is red, except for " + green("these words, which are green") + ".")) #其他的一些颜色api #其中第二个参数bold用于显示输出的信息是加粗显示 fabric.colors.blue(text, bold=False) fabric.colors.cyan(text, bold=False) fabric.colors.green(text, bold=False) fabric.colors.magenta(text, bold=False) fabric.colors.red(text, bold=False) fabric.colors.white(text, bold=False) fabric.colors.yellow(text, bold=False) Context managers for use with the with statement. #使用with声明进行上下文管理 which doesn’t work due to how shell-less SSH connections are implemented – state is not kept between invocations of run or sudo: fabric.context_managers.cd(path) 用于切换在远程主机的目录,如果要和其他命令组合使用的话需要使用with声明,默认cd切换远程目录是对其他命令不影响的。 例如,我想切换到/var/www目录下显示目录下的内容: cd("/var/www") run("ls") 上面的这段代码的结果是不正确的 正确的做法是需要结合with声明 with cd("/var/www"): run("ls") 如果想在本地目录切换的话就使用lcd fabric.context_managers.char_buffered(pipe) 强制本地终端的管道类型是character而不是line和buffered,仅用于是unix终端下,在windows下无需设置 fabric.context_managers.hide(*groups) 隐藏指定的输出: groups中包括: Status 状态信息,通常用户使用键盘终端,或者是server断开了连接,这些status信息很重要 aborts 中止信息,类似状态信息,仅仅到fabric当作是library的时候需要关闭,即使这个被关闭了,aborts仍然发生 warnings 警告信息, running 运行过程中的一些输出,比如命令正在运行过程中或者file传输过程中的一些输出 stdout 标准输出 本地或者远程与命令相关的标准输出 stderr 标准错误输出 本地或者远程与命令相关的错误输出 user 用于生产的一些信息(比如本地打印的一些信息) 例子: def test_hide(): with hide('stdout','stderr'): run("ls -al") 上面的例子将不会有任何输出,因为标准输出和标准输入都隐藏了 fabric.context_managers.lcd(path) 实现对本地目录的切换 例子: def test_lcd(): with lcd("/var/www"): local("scp ./* 172.16.35.2:~/") 上面的列子将会把/var/www中的文件拷贝到172.16.35.2的家目录中 fabric.context_managers.path(path, behavior='append') 设置PATH环境变量,用于直接执行shell命令,不需要使用绝对路径。 有三种behavior: append 对PATH变量进行追加(追加到其后) prepend 对PATH变量进行追加(追加到其前) replace 对PATH变量之间进行替换 例子: def test_path(): with path("/usr/local/nginx/sbin/",behavior='append'): run("nginx") 上面的例子将会启动远程主机的nginx,在此之前你要先定义好env.hosts和env.password,还要就是别忘了导入path fabric.context_managers.prefix(command) 对任何包裹在sudo和run里面的命令加上&& with prefix('cd /tmp'): run('./manage.py syncdb') 上面的代码等同于cd /tmp && ./manage.py syncdb prefix的嵌套使用: with prefix('cd /var/www'): run('ls') with prefix('cd html'): run('ls') 上面的代码等同于: cd /var/www && ls cd /var/www && cd html && ls fabric.context_managers.quiet() 是settings(hide('everything'), warn_only=True)的别名,用于隐藏一些输出,并且warn_only用于设置当发生错误的时候不是直接 Aborting直接终止程序而是出现warning警告并正常退出. fabric.context_managers.remote_tunnel(*args, **kwds) 用于建立一个通道,转发本地的一个可见端口到远程 例子: def test_remote(): with remote_tunnel(80): run("curl http://127.0.0.1") 上面的例子代表:在远程执行curl http://127.0.0.1访问远程主机的本地80端口,而这个80端口是映射到本地主机的80端口 所以最终的结果就是在远程主机上访问本地主机的80端口 fabric.context_managers.settings(*args, **kwargs) 用于设置一些fabric内置变量,这个之前使用了,这里就不举列子了 fabric.context_managers.shell_env(**kw) 用于设置shell环境变量,相当于使用export命令导出环境变量 例子 def test_shell(): with shell_env(TEST="test"): run("echo $TEST") 上面的例子将会在远程主机设置一个TEST的变量,然后输出 fabric.context_managers.show(*args, **kwds) 和hide相反,用于开启一些输出的 fabric.context_managers.warn_only() 前面已经谈论到这个变量的作用,这里就不再说了
运维的我要学开发-Fabric(2)
原创Jeff_Linux 博主文章分类:Python自动化运维 ©著作权
©著作权归作者所有:来自51CTO博客作者Jeff_Linux的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Haproxy的全透明代理
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
云端运维:我的成长轨迹与荣耀印记
运维,对我而言,既是一份工作,也是一份热爱。
运维 开发者社区 关于博主 云计算 阿里云 -
DB2日常运维命令linux sql Database db2