2017-04-13 126 views
0

我試圖從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進程不綁定到顯示器,所以它不知道要截圖 –

回答

0

在@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()