如何在Windows PC上使用python脚本截取屏幕截图?

问题描述:

我试图从Windows PC上截取UNIX服务器的屏幕截图。看来我的命令不起作用。当我在终端上尝试相同的命令时,它会保存该文件,但它不在我的下面的代码中。如何在Windows PC上使用python脚本截取屏幕截图?

import paramiko 

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(sftp_server, username=sftp_login, password=sftp_password) 
stdin, stdout, stderr = ssh.exec_command("xwd -root | convert xwd:- screenshot22.jpg") 

sftp = ssh.open_sftp() 
transport = paramiko.Transport((sftp_server, sftp_port)) 
transport.connect(username = sftp_login, password = sftp_password) 
sftp = paramiko.SFTPClient.from_transport(transport) 
sftp.get("screenshot22.jpg", 'screenshot22.jpg', None) 

sftp.close() 
ssh.close() 

注:1。 XWD安装我的UNIX服务器上。 2.尝试导入命令,但这需要(UNIX的第二个桌面,而不是正在尝试的那个)

+0

代码的哪些部分不工作?可能值得检查你的'ssh.exec_command'行中的stderr和stdout。 –

+0

这是错误信息,'b“xwd:无法打开显示''\ n转换:无法读取图像头' - '@ xwd.c/ReadXWDImage/227。\ nconvert:缺少图像文件名'screenshot22.jpg' @ convert.c/ConvertImageCommand/2800。\ n“' – Dinesh

+0

这可能是SSH会话没有屏幕记录的问题。 SSH进程不绑定到显示器,所以它不知道要截图 –

在@Christopher Apple的帮助下,我找到了一个办法。

工作的源代码,

import paramiko 

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(sftp_server, username=sftp_login, password=sftp_password) 
stdin, stdout, stderr = ssh.exec_command("xwd -out screenshot.xwd -root -display :0.0") 
stdin, stdout, stderr = ssh.exec_command("convert screenshot.xwd screenshot22.jpg") 

sftp = ssh.open_sftp() 
transport = paramiko.Transport((sftp_server, sftp_port)) 
transport.connect(username = sftp_login, password = sftp_password) 
sftp = paramiko.SFTPClient.from_transport(transport) 
sftp.get("screenshot22.jpg", 'screenshot22.jpg', None) 
sftp.close() 
ssh.close()