FriendlyPI服务器

FriendlyPi的Python项目详细描述


友好pi

friendlypi是一个客户机/服务器解决方案,允许用户远程控制他们的linux操作系统。具体来说,这个项目的目标是允许控制机器子系统。对于每个子系统,服务器发布用户可以与之交互的状态和操作列表。然后可以使用客户机应用程序向服务器发送正确的命令。

典型的用例是在断开无键盘Linux盒上的USB电缆之前卸载外部硬盘驱动器。在这种情况下,子系统是硬盘驱动器,发布状态可以是“mounted”或“unmounted”,可能的操作可以是“mount”或“unmount”,具体取决于状态。用户可以使用自己的平板电脑/手机挂载驱动器,而无需通过ssh远程登录并使用控制台。

friendlypi服务器是基于插件的,每个插件提供处理不同子系统的代码。因此,用户可以编写自己的自定义模块。

客户端可以使用浏览器与服务器交互,或者使用提供的android应用程序(可从这里下载:https://github.com/happyemi/friendlypi

安装服务器

可以使用简易安装来安装服务器:

easy_install3 FriendlyPi

注意:不要使用pip友好地安装pi,因为安装无法正常工作。

设置服务器

服务器需要配置文件才能正确启动。配置文件必须命名为friendlypi.json,并且必须位于/etc/中;它定义了服务器将处理的模块实例(即子系统)的列表。最简单的配置如下:

{
"instances": [["test1", "TestMod", {}]]
}

这将指示friendlypi在启动时实例化测试模块。 默认情况下,服务器在端口8080上运行。可以设置不同的值(例如80):

{ “port”: 80, “instances”: [[“test1”, “TestMod”, {}]] }

测试服务器

安装服务器后,请手动启动它。启动首选浏览器并将其指向127.0.0.1:8080/status?html=1(当然,如果不同,用实际值替换环回地址和端口)。如果所有操作都已正确完成,浏览器应显示正在运行的测试模块的实例。存在一个递增按钮,按下该按钮将递增“状态”值。

配置MediaDevice模块

MediaDevice模块允许用户远程挂载/挂载挂载点。为了使其正常工作,/etc/fstab必须正确配置,并且运行服务器的unix用户必须具有正确的权限来装载/umount文件系统,假设装载点是“/media/usb”,friendlypi.json必须如下所示:

{
"instances": [["media1", "MediaDevice", {"path": "/media/usb"}]]
}

“media1”是实例名,必须是唯一的。“mediadevice”是模块名,最后一个参数是包含配置的映射。可以配置多个装载点,如下所示:

{
"instances": [["media1", "MediaDevice", {"path": "/media/usb"}],
              ["media2", "MediaDevice", {"path": "/media/usb2"}]]
}

配置ServiceManager模块

ServiceManager模块允许用户远程启动/停止服务。要使其正常工作,运行服务器的unix用户必须具有执行“service”命令的适当权限,如下所示:

service samba start

配置服务管理器需要两件事:服务名(例如“samba”)和pid文件(例如“/var/run/samba/smbd.pid”)。有效的配置如下:

{
"instances": [["service1", "ServiceManager", {"service": "samba", "pid_file": "/var/run/samba/smbd.pid"}]]
}

可以配置多个服务管理器,方法与MediaDevice案例中描述的完全相同

免责声明

这个软件处于早期alpha阶段,目前还没有实现任何身份验证机制。不要在公用网络上运行服务器。使用风险自负。

更改

0.1d1

  • 现在可以配置服务器端口
  • 添加了ServiceManager模块

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果