精明的程序员——Linux的远程控制
今天本来在写一个捕捉Linux中的键鼠消息的程序。查阅资料,看到了如下信息:
键鼠设备(包括touch等设备)事件以文件的形式存在/dev/input/event[n]中;其中n等于多少,可以通过cat /proc/bus/input/devices得知。读取这些文件,就可以获得键盘与鼠标触发的消息,反之,写入这些文件就可以模拟键盘与鼠标的输入动作。
既然是文件,那么通过网络把一台机器的event传给另一台机器会有什么效果呢?于是,抱着试试看的心态就做了一个小实验。
server端:
nc -l 8888 > /dev/input/event2 (我的机器event2是鼠标)
client端:
nc SERVER_IP 8888 < /dev/input/event2
实验完毕。效果就是一台机器的鼠标(或键盘)可以控制另一台机器,感觉就像local的操作,非常棒!
之前用过RDP,之前用过USBIP。今天才发现原来Linux原生就可以做到远程控制,不需要装其他的软件。
如此强大的功能,如此方便的实现,不禁感慨Linux的精妙之处。这个功能主要得益于:
1. Linux中一切皆文件的原则;
2. 重定向的强大功能;
3. netcat这个网络工具中的瑞士军刀。