如何使用Python远程重启受密码保护的机器上的服务?
我决定学习Python这门新语言。首先,我想写一个脚本,这样我就可以从我的电脑上远程重启其他机器上的服务。可是,远程机器需要用户名和密码才能登录,我该怎么做呢?我不需要一个完整的解决方案,只想知道应该使用哪些库,或者在写这个脚本时需要注意哪些问题。
补充说明:所有的远程机器都在使用Windows 2003。
5 个回答
1
你想要在什么操作系统上运行这些目标机器呢?如果“服务”指的是“Windows NT服务”,而你的本地机器也是Windows系统的话,我会推荐使用IronPython作为Python的实现,然后直接调用.net中的System.Management命名空间里的WMI功能——这些功能就是为了远程管理而设计的。
3
看看这个叫做 Fabric 的工具,它是基于 paramiko 开发的。这个工具真的是个好帮手,可以用 Python 来自动化远程任务。
Fabric 的文档 会告诉你使用起来有多简单。
3
人们通常推荐使用 paramiko 这个库来进行 SSH 操作(我假设你需要 SSH 来连接远程机器)。这里有一个不错的 教程 可以参考。
补充说明: 在 Windows 系统上,最简单的方法可能是使用 SysInternals 的 psservice 工具,可以通过 os.system 来调用;这个工具可以启动远程服务,并且接受登录凭证。
如果你想直接在 Python 中操作,你需要使用 win32service.StartService。在此之前,你需要打开远程服务管理器,然后再打开远程服务。在这之前,你还需要以你想要执行操作的用户身份进行模拟,具体可以参考这个 示例。