锐速官方论坛 - ServerSpeeder,全球领先TCP加速技术,源于2006!

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2685|回复: 0

ansible python api 解决中文乱码

[复制链接] [已阅至1楼]

20

主题

23

帖子

100

积分

注册会员

Rank: 2

积分
100
发表于 2015-2-16 17:44:22 | 显示全部楼层 |阅读模式
运维工具是用python + django +ansible写的,当用ansible调用远程机器上的脚本时,会造成中文显示乱码,原开始以为是系统编码问题,所以把系统编码都设置成了LANG=zh_CN.UTF-8,结果还是乱码,在被调用的脚本中,也添加了这个LANG=zh_CN.UTF-8,还是乱码。其实要解决这个问题,只有在ansible的python pai那设置环境变量即可,environment = {'LANG':'zh_CN.UTF-8','LC_CTYPE':'zh_CN.UTF-8'}
我的代码如下:
def ansible_fun(m_name,m_args,ip,r_user,r_pass,r_port,key_path,forks_num=1):
    '''
    这个函数是调用ansible.runner模块,以下是传递进来的参数:
    m_name   : 模块名,默认使用shell模块
    m_args   : 命令参数,如shell命令
    ip       : ip地址
    r_user   : 远程机器用户名
    r_pass   : 远程机器r_user的密码
    r_port   : 远程机器端口
    key_path : 密钥路径
   
    注:如果是使用shell模块,则获取返回信息调用字典中的key:stdout
    '''
    runner = ansible.runner.Runner(
        module_name = m_name,
        module_args = m_args,
        pattern = ip,
        remote_port = r_port,
        remote_user = r_user,
        private_key_file = key_path,
        forks = forks_num,
        environment = {'LANG':'zh_CN.UTF-8','LC_CTYPE':'zh_CN.UTF-8'}  
        )
    result = runner.run()
    try:
        return result['contacted'][ip]
    except:
        return result['dark'][ip]
管理员已阅至此楼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Server Speeder Forum  

GMT+8, 2018-8-22 15:24 , Processed in 0.018022 second(s), 16 queries , Xcache On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表