ansible api执行远程脚本结果中文乱码报错

简介: ansible api执行远程脚本结果中文乱码报错

ansible api执行远程脚本:sh nfts/test/test.sh

报错:ERROR Internal Server Error

查看日志:docker logs -f --tail=100 ansible-api

File "/opt/py3/lib/python3.8/site-packages/rest_framework/renderers.py",line 110,in render return ret.encode()
UnicodeEncodeError:'utf-8' codec can't encode characters in position 323-334: surrogates not allowed
Task ansible_ui.tasks.run_adhoc_raw[] received
Start task: Ansible Ad-hoc

原因:执行脚本的远程服务器是gb2312编码,而ansible需要utf-8编码,所以在脚本执行完返回结果时ansible接收的结果是乱码,乱码转Unicode时报错。

解决:

在执行的脚本后 加 | iconv -f GBK -t UTF-8 (转脚本编码)

  • 命令行执行:
docker exec -it ansible-api bash
cd /opt/py3/bin
./ansible all -i 36.xx.xx.211, -u login_name(远程服务器) -k -m shell -a "cat /nfts/test/test.sh | iconv -f GBK -t UTF-8;date; sh nfts/test/test.sh | iconv -f GBK -t UTF-8" 
# -k 提示输入密码(目标机)
  • 任务和脚本执行
cat /nfts/test/test.sh | iconv -f GBK -t UTF-8
date
sh nfts/test/test.sh | iconv -f GBK -t UTF-8


相关文章
|
19天前
|
小程序 API 开发者
【产品上新】接口不报错=API成功接入?不妨“验”一下
【产品上新】接口不报错=API成功接入?不妨“验”一下
19 0
|
23天前
|
JSON JavaScript API
如何使用Newman 命令行的方式去运行API脚本?
如何使用Newman 命令行的方式去运行API脚本?
如何使用Newman 命令行的方式去运行API脚本?
|
2月前
|
敏捷开发 API
【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
|
17天前
|
安全 网络安全 API
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error
31 1
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error
|
2月前
|
API C# 图形学
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
38 1
|
3月前
|
Linux Shell
suse 12 sp3 利用shell脚本离线编译安装ansible
suse 12 sp3 利用shell脚本离线编译安装ansible
38 0
|
7月前
|
前端开发 JavaScript 关系型数据库
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
362 0
|
7月前
|
JavaScript API
百度Web服务API跨域的Cross-Origin Read Blocking (CORB) blocked cross-origin response报错两种解决方案
百度Web服务API跨域的Cross-Origin Read Blocking (CORB) blocked cross-origin response报错两种解决方案
221 0
|
7月前
|
Java Spring
使用feign调用的时候出现Could not autowire. No beans of ‘Api2UserFegin‘ type found报错
使用feign调用的时候出现Could not autowire. No beans of ‘Api2UserFegin‘ type found报错
134 0
|
7月前
|
Serverless 网络安全
执行 s cli fc-api createService 命令报错
执行 s cli fc-api createService 命令报错
51 3