基本上我正在尝试使用 Linux Mint 来显示 Powerpoint 演示文稿。
演示文稿将在 Windows 计算机上更新,然后用户将执行一个脚本,在演示终端上“刷新”演示文稿。我们现在已经有了这个功能,但使用的是 Windows XP,由于支持结束,我们现在必须删除它。
我在 Mint 中遇到的问题是我不知道如何从 Windows 计算机执行脚本,该脚本将终止当前的演示文稿进程,传输演示文稿的最新副本,然后执行。
我尝试使用 plink 通过 SSH 连接编写脚本,但它没有显示演示文稿,因为它在“SSH”会话而不是控制台中运行。
非常感谢任何想法,我已经碰到了心理障碍!
谢谢
答案1
我在这里做一些有根据的猜测:
- 在 Linux 机器上,某些图形会话正在运行,很可能是 xserver。
- 使用 ssh 连接您无法访问该 xserver。
您可以尝试以下操作:
- 您将新演示文稿复制到 Linux 计算机。
- 假设您的演示程序被调用
foo
(请告诉我们它是如何调用的),您可以使用killall foo
或杀死它pkill foo
。如果您使用正确的用户(或 root,您不应该使用),这将起作用。 您需要
DISPLAY
在 ssh 脚本中设置变量才能启动图形应用程序。以下很可能会起作用(如果不起作用,请参阅在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?)。export DISPLAY=":0"
- 现在您应该能够
foo
重新开始并且它应该显示在屏幕上。
您可能想为此创建一个脚本(使可执行文件chmod u+x restart-foo.sh
:
#!/usr/bin/env bash
# name this script
# restart-foo.sh
pkill foo
export DISPLAY=":0"
nohup foo path/to/presentation.xxx &
您可以使用 ssh 执行此操作(我猜这取决于您的 Windows ssh 客户端)
my-command-to-copy-the-presentation
ssh user-name@linux-machine ./restart-foo.sh
答案2
如果您的设置允许您将演示文稿保存/导出到pdf
,您可以从 libreoffice 切换到 evince 以在 Linux 计算机上显示演示文稿。 Evince 是一个pdf
查看器,如果显示的文件发生更改,它将自动更新视图。
在您的设置中,您所要做的就是弄清楚如何将更新的演示文稿复制到 Linux 计算机。最好,您可以对其进行设置,以便将其pdf
保存在 Samba 共享中。然后,pdf
当 Windows 计算机的用户保存它时,显示的内容就会立即更新。
答案3
在 Fabian 的帮助下,我成功地使用以下脚本完成了这项工作:
#!/usr/bin/env bash
mount -t cifs //10.50.18.114/Presentation -o 'username=Administrator,password=***,sec=ntlm' /mnt/share
pkill soffice.bin
cp -v /mnt/share/Pres.ppt /home/kyle/Documents
chmod 777 /home/kyle/Documents/Pres.ppt
export DISPLAY=":0"
nohup libreoffice --norestore --nolockcheck --show /home/kyle/Documents/Pres.ppt &
sessionid="$(pidof -s sshd)"
kill $sessionid
exit
我使用 plink 执行一个“SSH 脚本”,该脚本会自动以 root 身份运行上述脚本,最后的终止会话只是终止 plink ssh 会话,因为它只是挂在最后并且无法正确关闭。