Linux之xdotool工具安装及实践

2023-12-11 13:20

本文主要是介绍Linux之xdotool工具安装及实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、xdotool工具简介

  xdotool允许您通过编程(或手动)模拟键盘输入和鼠标活动,移动和调整窗口大小等,使用X11的XTEST扩展和其他Xlib函数。该工具的主要应用场景是部分软件需要依赖桌面窗口,而linux服务器环境下我们习惯于命令行下的高效操作和运行,xdotool工具可以模拟鼠标的操作,协助我们在命令行下完成需要鼠标点击才能完成的操作。

二、xdotool工具安装

1、安装epel扩展源

[root@s146 ~]# yum -y install epel-release

Updated:
epel-release.noarch 0:7-14

Complete!

2、yum源下搜寻xdotool

>

3、yum方式安装xdotool

[root@s146 ~]# yum install -y xdotool

三、使用实践

1、背景说明

  因业务需求需要在linux环境下安装H3C inode客户端,安装了inode客户端后发现每天凌晨服务端会自动断开连接,需要手动重连。inode客户端需要安装在x11桌面环境下,连接方式为点击连接按钮。目标是希望通过脚本实现自动拨号,减轻运维工作。

2、实践方案

  通过安装xdotool工具,模拟鼠标动作,点击连接按钮。配置定时任务,定时执行点击连接按钮操作。

3、实践步骤

  • 将inode拨号窗口放置到固定位置
    在这里插入图片描述
  • 分析手工操作步骤
    在这里插入图片描述
  • 获取连接图标屏幕坐标
    在这里插入图片描述

[root@s146 scripts]# xdotool getmouselocation

  • 获取connect按钮屏幕坐标
    在这里插入图片描述

[root@s146 scripts]# xdotool getmouselocation

  • 编写脚本模拟点击

[root@s146 scripts]# cat autocvpn.sh
#!/bin/bash
#script name: autocvpn.sh
#author: wuhs
#description: 用于inode vpn自动重连
#version: v1

export DISPLAY=:0.0

xdotool mousemove 16 147 click 1
sleep 1
xdotool mousemove 83 107 click 1

  • 配置定时任务

[root@s146 scripts]# crontab -e
#autocvpn.sh
28 14 * * * sh /root/scripts/autocvpn.sh & > /tmp/autocvpn.log

  • 自动连接测试
    在这里插入图片描述

四、xdotool命令使用示例

1、获取命令帮助

[root@s146 scripts]# xdotool help
Available commands:
getactivewindow
getwindowfocus
getwindowname

2、获取活动窗口ID

#远程桌面执行时获取结果始终为当前shell终端窗口ID,shell环境下执行时获取的是鼠标指针停留所在的窗口ID。shell命令下执行记得先导入桌面变量。
[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool getactivewindow
44040279

3、获取指定窗口的名称

[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool getwindowname 44040279
iNode Intelligent Client

4、获取指定窗口的进程号

[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool getwindowpid 44040279
13542

5、光标移动到指定位置10,100

[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool mousemove 10 100

6、点击右键

  使用xdotool click命令点击鼠标键,1表示左键,2表示中键,3表示右键。

[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool click 3
在这里插入图片描述

7、移动到指定位置并点击按键

[root@s146 scripts]# xdotool mousemove 10 100 click 1

8、获取鼠标指针坐标

[root@s146 scripts]# xdotool getmouselocation
x:36 y:596 screen:0 window:33554442

9、搜索窗口信息

[root@s146 scripts]# xdotool search “iNode Intelligent Client”
Defaulting to search window name, class, and classname
44040279
[root@s146 scripts]# xdotool search “iNode Intelligent Client” getwindowname
Defaulting to search window name, class, and classname
iNode Intelligent Client
[root@s146 scripts]# xdotool search “iNode Intelligent Client” getwindowpid
Defaulting to search window name, class, and classname
13542

10、在窗口输出指定内容

#shell环境下执行
[root@s146 scripts]# xdotool type “hello xdotool”
#活动窗口下输出了指定内容“hello xdotool”在这里插入图片描述

11、执行特殊按键

在这里插入图片描述

[root@s146 scripts]# export DISPLAY=:0.0
[root@s146 scripts]# xdotool key shift

12、设置窗口大小

#设置指定窗口的大小,参数顺序为宽、高。

[root@s146 scripts]# xdotool windowsize 44040279 400 600

五、QA

1、定时任务执行报错Failed creating new xdo instance

  • 报错信息:
    Error: Can’t open display: (null)
    Failed creating new xdo instance
  • 报错原因:定时任务是shell环境下执行,没有窗口实例
  • 解决方案:在脚本中添加export DISPLAY=:0.0

这篇关于Linux之xdotool工具安装及实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/480830

相关文章

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A