ansible 在远程端执行python脚本报错

这个应该是被控制端没有安装pyautogui模块吧?


但是我被控制端装了pyautogui

被控制端这里引用又报错:

看着有点像这个模块执行需要个显示器,但是通过ssh过去的时候又不支持显示导致的,可以试下使用无头模式执行

这个不支持显示吗?我的脚本主要用在被控制端模拟控制点击某些坐标操作客户端使用

你可以试下这篇文章里说的
python - 在 ubuntu 中导入 pyautogui 抛出 KEYERROR :DISPLAY - IT工具网 (coder.work)

是不是我这个被控端如果有个显示器也可以通过ansible远程执行是不?

这个我不太确定,你可以试试
银河麒麟桌面安装pyautogui后导入失败:display = Display(os.environ[‘DISPLAY’]) - Tarzen - 博客园 (cnblogs.com)

image
老师,ansible+pyautogui远端运行这个脚本好像是不行,我直接在被控制端是可以正常运行pyautogui的,但是在主机上通过ansible下发pyautogui的python脚本报错,按照你发我帖子设置了还是报错,有没有其他远端工具推荐的?

我本地模拟下,试试

本地是可以的,就是远程不行,网上说的意思是pyautogui需要gui的权限,但是我们远程使用的都是ssh,是没有gui访问权限的

老师,不用ansible,有没有其他的方案

remote-gui.zip (4.2 KB)

你可以使用我的脚本试下,我使用vnc来试下虚拟屏幕的创建
参考的是这篇文章
[python]是否可以在无头模式下运行 PyAutoGUI? - 编程宝典 (bianchengbaodian.com)
还有官网
https://github.com/ponty/PyVirtualDisplay
pyautogui官网
Installation — PyAutoGUI documentation

老师,按照你说的方法运行成功了,但是没有点击效果的话,能测试桌面应用的自动化吗?主要跑麒麟电脑上我们的应用程序里的一些点击操作的稳定性

这里有点击效果吧,使用我写的这种方式是支持点击的,也可以用vnc viewer连接查看具体的操作

pyautogui的操作都支持,你可以用截图试下

好的,我试试

老师,这个下面第一张是运行的结果


第二张是我加了截图的代码

截图保存,是黑的图,看不到效果

这正常的,因为我默认安装的是最简单的vnc server,想要完整的桌面就需要进行相应的配置
vnc远程桌面Linux — Gui与Xvfb的使用 - 简书 (jianshu.com)

你可以搜索“ Ubuntu20.04 虚拟显示器配置(解决无显示器远程黑屏问题)”类似的问题去尝试解决下

好的,我配置一下试试