我正在尝试截取远程主机的屏幕截图(使用xwd
)并将其转换为 png(使用convert
)。我需要它成为一个无人值守的 oneliner,所以这就是我正在做的:
sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root | convert xwd:- output.png
问题是生成的 PNG 文件被裁剪,仅显示屏幕的顶部部分。如果我分两步完成该过程,它会起作用:
sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root > output.xwd
convert output.xwd output.png
但我需要只用一个命令来完成它。
convert
我猜这与从远程命令接收数据的速率有关xwd
。我尝试过使用stdbuf
正如这里提到的增加缓冲区大小,但似乎没有任何效果。
我正在使用 ImageMagick 6.7.8.9-15。
答案1
我需要只用一个命令来完成
如果“一个命令”表示单个 shell 表达式,您可以将它们链接起来&&
:
sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root > output.xwd && convert output.xwd output.png
或者如果这不起作用,您可以使用流程替代:
sshpass -p THE_PASSWORD ssh [email protected] convert <(xwd -display :0 -root) output.png