【发布时间】:2014-01-04 21:14:29
【问题描述】:
我正在尝试通过 SSH 修改远程 Windows 主机的屏幕分辨率。 首先,我用python写了一个小脚本来改变本地桌面的分辨率。
import win32api
dm = win32api.EnumDisplaySettings(None, 0)
dm.PelsHeight = 1024
dm.PelsWidth = 1280
win32api.ChangeDisplaySettings(dm, 0)
然后,使用pyinstaller将其构建为独立的.exe文件,将输出的文件放到远程主机,并通过SSH执行该工具。
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(remote_win_host_ip, username= host_user, password=host_pswd)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('/cygdrive/e/test/change_screen_res.exe')
同时,我编写了一个脚本来显示当前的分辨率,并以同样的方式在远程主机上使用它。
from win32api import GetSystemMetrics
print "width =", GetSystemMetrics (0)
print "height =",GetSystemMetrics (1)
但是,我发现远程主机的分辨率总是1024*768。
如何修改分辨率?
谢谢
【问题讨论】:
-
在远程主机上手动运行可执行文件会改变屏幕分辨率吗?
-
不,使用 paramiko 或 plink 通过 SSH 远程执行文件。
-
你的 SSH 代码是什么样的? (SSH 不提供任何用于更改分辨率的工具,也不存在于 Windows 中)。您尝试运行什么命令来更改远程主机上的分辨率?
-
@SUT:我的意思是,可执行文件真的有效吗?它是否在没有安装 Python 的计算机上运行?我记得 Py2EXE 或 PyInstaller 都依赖于 .NET 框架。
-
是的,我尝试直接在远程主机上执行工具,它们工作正常。
标签: python ssh paramiko openssh